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

Uit Wikikids
Naar navigatie springen Naar zoeken springen
Regel 44: Regel 44:
 
             var row = document.createElement('tr');
 
             var row = document.createElement('tr');
 
             var totalVisitors, mainPageVisited, pageTitle, pageLink, date;
 
             var totalVisitors, mainPageVisited, pageTitle, pageLink, date;
             if (historyLogCounter) {
+
             totalVisitors = page.normalVisitors + page.mainPageVisitors;
            totalVisitors = page.nV + page.mPV;
+
            mainPageVisited = page.mainPageVisitors ? parseNumber(page.mainPageVisitors) : "";
            mainPageVisited = page.mPV ? parseNumber(page.mPV) : "";
+
            pageTitle = page.title.replace(/_/g, ' ');
            pageTitle = page.t.replace(/_/g, ' ');
+
            pageLink = page.title;
            pageLink = page.t;
+
            date = new Date(page.updatedAt);
            if (pageLink.includes("S:Z\\")) {
 
            pageLink = pageLink.replace(/S:Z\\/g, 'Speciaal:Zoeken/');
 
            pageTitle = pageTitle.replace(/S:Z\\/g, 'Zoekopdracht: ');
 
            }
 
            date = new Date(page.uA);
 
            } else {
 
            totalVisitors = page.normalVisitors + page.mainPageVisitors;
 
            mainPageVisited = page.mainPageVisitors ? parseNumber(page.mainPageVisitors) : "";
 
            pageTitle = page.title.replace(/_/g, ' ');
 
            pageLink = page.title;
 
            if (pageLink.includes("S:Z")) {
 
            pageLink = pageLink.replace(/S:Z\\/g, 'Speciaal:Zoeken/');
 
            pageTitle = page.title;
 
            }
 
            date = new Date(page.updatedAt);
 
            }
 
 
             function addZero(number) {
 
             function addZero(number) {
 
                 return number < 10 ? "0" + number : number;
 
                 return number < 10 ? "0" + number : number;
Regel 161: Regel 145:
 
     // 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) {
    if (historyLogCounter) {
+
  return b.normalVisitors + b.mainPageVisitors - a.normalVisitors - a.mainPageVisitors;
    return b.nV + b.mPV - a.nV - a.mPV;
 
    } else {
 
    return b.normalVisitors + b.mainPageVisitors - a.normalVisitors - a.mainPageVisitors;
 
    }
 
 
     });
 
     });
 
     return pages;
 
     return pages;

Versie van 31 jan 2023 21:20

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

var version = '2.9';

function parseNumber(number) {
    return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
}

function showProjectLogCounter(pages) {
    document.getElementsByTagName("h1")[0].textContent = "Speciaal:LogCounter";
    document.title = "LogCounter - WikiKids";

    var searchBar = '<div><input type="text" id="lc-searchbar"> <button onclick="searchTitle();">Zoek</button></div>'
        + '<button onclick="reloadPagesLogCounter();">Laad alles opnieuw in</button>';
    var logCounterInfo = '<div id="logCounterInfo">Deze pagina laat zien hoeveel paginabezoeken er zijn geweest op een specifieke pagina. De rij "Views" bevat alle views. De rij "Categorie" laat alleen maar zien hoeveel views er vanuit een categorie komen.</div>';

    var table = document.createElement('table');
    table.classList.add('wikitable');
	
	var arrayHoofdpagina = ["1", "20012023"]; //voeg versies toe die de hoofdpagina gebruiken
	var arrayCategorie = ["1"]; //voeg versies toe die de categorieën gebruiken
    var tableHead = document.createElement('thead');
    var tableHeadRow = document.createElement('tr');
    var tableHeadTitles;
    if (arrayHoofdpagina.includes(requestDate)) {
    	tableHeadTitles = ['Paginatitel', 'Laatste bezoek', 'Views', 'Hoofdpagina'];
    } else {
    	tableHeadTitles = ['Paginatitel', 'Laatste bezoek', 'Views', 'Categorie'];
    }
    var tableBody = document.createElement('tbody');

    var currentPage = 1;
    var rowsPerPage = mw.util.getParamValue('rows') ? parseInt(mw.util.getParamValue('rows')) : 25;
    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, mainPageVisited, pageTitle, pageLink, date;
            totalVisitors = page.normalVisitors + page.mainPageVisitors;
            mainPageVisited = page.mainPageVisitors ? parseNumber(page.mainPageVisitors) : "";
            pageTitle = page.title.replace(/_/g, ' ');
            pageLink = page.title;
            date = new Date(page.updatedAt);
            function addZero(number) {
                return number < 10 ? "0" + number : number;
            }

            var dateString = addZero(date.getDate()) + "-" + addZero((date.getMonth() + 1)) + "-" + date.getFullYear();

            row.innerHTML = `<td><a href="/${pageLink}">${pageTitle}</a></td>
                <td>${dateString}</td>
                <td>${parseNumber(totalVisitors)}</td><td><span style="color:green; font-weight: bold;">${parseNumber(mainPageVisited)}</span></td>`;
            tableBody.appendChild(row);
        });
    }

    showPage(1);

    var pagination = document.createElement('div');
    pagination.classList.add('pagination');

    var prevButton = document.createElement('button');
    prevButton.textContent = 'Vorige';
    prevButton.style = 'margin-right: 10px;';
    prevButton.addEventListener('click', function () {
        if (currentPage > 1) {
            showPage(currentPage - 1);
            //Manier waarop je kunt zien op welke pagina je bent
            document.getElementById('pageCounter').textContent = `Pagina ${currentPage} van ${totalPages}`;
        }
    });
    pagination.appendChild(prevButton);

    var pageCounter = document.createElement('span');
    pageCounter.id = "pageCounter";
    pageCounter.textContent = `Pagina ${currentPage} van ${totalPages}`;
    pagination.appendChild(pageCounter);

    var nextButton = document.createElement('button');
    nextButton.textContent = 'Volgende';
    nextButton.style = 'margin-left: 10px;';
    nextButton.addEventListener('click', function () {
        if (currentPage < totalPages) {
            showPage(currentPage + 1);
            //Manier waarop je kunt zien op welke pagina je bent
            document.getElementById('pageCounter').textContent = `Pagina ${currentPage} van ${totalPages}`;
        }
    });
    pagination.appendChild(nextButton);

    tableHeadTitles.forEach(function (title) {
        var tableHeadCell = document.createElement('th');
        tableHeadCell.textContent = title;
        tableHeadRow.appendChild(tableHeadCell);
    });
    tableHead.appendChild(tableHeadRow);
    table.appendChild(tableHead);
    table.appendChild(tableBody);

    var totalVisitors = pages.reduce(function (total, page) {
    	if (historyLogCounter) {
    		return total + page.nV + page.mPV;
    	} else {
    		return total + page.normalVisitors + page.mainPageVisitors;
    	}
    }, 0);

    var totalElement = document.createElement('div');
    totalElement.style = 'margin-top: 20px; display: flex; flex-direction: column;';

    var totalVisitorsElement = document.createElement('span');
    totalVisitorsElement.textContent = `Totaal aantal bezoeken: ${parseNumber(totalVisitors)}`;
    totalElement.appendChild(totalVisitorsElement);

    var totalPagesElement = document.createElement('span');
    totalPagesElement.textContent = `Totaal aantal pagina's: ${parseNumber(pages.length)}`;
    totalElement.appendChild(totalPagesElement);

    //document.getElementById('bodyContent').innerHTML = '';
    document.getElementById('bodyContent').innerHTML = searchBar + logCounterInfo;
    document.getElementById('bodyContent').appendChild(table);
    document.getElementById('bodyContent').appendChild(pagination);
    document.getElementById('bodyContent').appendChild(totalElement);
}

function getCategoriesLogCounter() { //toon alleen pagina's in een specifieke categorie
	
}

function getPagesLogCounter() {
    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;
}

function reloadPagesLogCounter() {
    var allPages = getPagesLogCounter();
    showProjectLogCounter(allPages);
}

var allPages;
if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "LogTheCounter") {
    var allPages = getPagesLogCounter();
    //showProjectLogCounter(allPages);
	for (const x of allpages) {
		deleteit('mPV', 'mainPageVisitors', x);
		deleteit('nV','normalVisitors', x);
		deleteit('t','title', x);
		deleteit('uA','updatedAt', x);
	}
	console.log(allpages); 
}

function deleteit(new_key, old_key, x){
	Object.defineProperty(allpages[x], new_key,
        Object.getOwnPropertyDescriptor(allpages[x], old_key));
    delete allpages[x][old_key];
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-LogTheCounter.js&oldid=764230"