MediaWiki:Common.js/User:Fumple/EditCount.js: Difference between revisions

From Inkipedia, the Splatoon wiki
m (Fumple moved page MediaWiki:Common.js/User:FunPL/EditCount.js to MediaWiki:Common.js/User:Fumple/EditCount.js: Text replacement - "FunPL" to "Fumple")
(Clean up + more edit categories)
 
Line 6: Line 6:
var user = url.searchParams.get("user");
var user = url.searchParams.get("user");


var msgs = [
var alledits = [];
    /*"That user made more than 500 edits. This will take longer...",
$("#controls").append('<input id="user-edits-name" type="text" placeholder="Username"/> <input id="user-edits-button" type="button" value="Display edit count"/>');
    "Hmm 1000 edits... nice! More time please!",
    "1500",
    "Woah 2000? That's a lot!",
    "And we keep going... 2500",
    "User edit counter 3000",
    "AM I LIKE DISCORD YET? 3500",
    "WHAT? 4000? DAAMN",
    "4500",
    "5000! Okay, this is epic!",
    "More? cmon! I don't have time to keep writing this!",
    "6000! Inkoming edits!",
    "6500! Wow this place is crowded",
    "7000! I ran out of ideas",
    "7500! Nevermind, keep going!",
    "8000! OCTO EXPANSION!?!?!?",
    "8500! END ALREADY! I want to be done...",
    "9000!",
    "IT'S OVER 9000!!!!",
    "10000! OH MY GOD. 10000???",
    "Okay no more, 10500"*/
]
 
var curredit = 0;
var oldlen = 0;
var tempedit = [];
$("#user-edits").append('<input id="user-edits-name" type="text" placeholder="Username"/> <input id="user-edits-button" type="button" value="Display edit count"/>');
$("#load").css("display", "none");
$("#load").css("display", "none");
$("#user-edits-button").click(function () {
$("#user-edits-button").click(function () {
     $("#user-edits-name").attr("disabled", "")
     $("#user-edits-name").attr("disabled", "")
     $("#user-edits-button").attr("disabled", "")
     $("#user-edits-button").attr("disabled", "")
     curredit = 0;
     alledits = [];
    oldlen = 0;
    tempedit = [];
     new mw.Api().get({
     new mw.Api().get({
         "action": "query",
         "action": "query",
         "list": "usercontribs",
         "list": "usercontribs",
         "uclimit": "500",
         "uclimit": "max",
         "ucprop": "tags|title",
         "ucprop": "tags|title",
         "ucuser": $("#user-edits-name")[0].value
         "ucuser": $("#user-edits-name")[0].value
Line 60: Line 32:
}
}
function done(data) {
function done(data) {
    alledits = alledits.concat(data.query.usercontribs);
     if (data.continue != null) {
     if (data.continue != null) {
        oldlen += data.query.usercontribs.length;
         $("#load").html(`Loading edits... (${alledits.length}/?)<br/>`);
         $("#load").html((msgs[curredit] || oldlen)+"<br>");
        curredit++;
        tempedit = tempedit.concat(data.query.usercontribs);
         new mw.Api().get({
         new mw.Api().get({
             "action": "query",
             "action": "query",
             "list": "usercontribs",
             "list": "usercontribs",
             "uclimit": "500",
             "uclimit": "max",
             "ucprop": "tags|title",
             "ucprop": "tags|title",
             "ucuser": $("#user-edits-name")[0].value,
             "ucuser": $("#user-edits-name")[0].value,
Line 81: Line 51:
         return;
         return;
     }
     }
     oldlen += data.query.usercontribs.length;
     var noredirects = alledits.filter(function (a) { return !a.tags.includes("mw-new-redirect") });
     tempedit = tempedit.concat(data.query.usercontribs);
     var filtered = noredirects.filter(function (a) { return a.ns != 2 && a.ns != 3 }).length;
     var filtered = tempedit.filter(function (a) { return a.tags.indexOf("mw-new-redirect") == -1 });
     var page = noredirects.filter(function (a) { return a.ns % 2 == 0 }).length;
     filtered = filtered.filter(function (a) { return !a.title.startsWith("User:") });
    var talk = noredirects.filter(function (a) { return a.ns % 2 == 1 }).length;
     filtered = filtered.filter(function (a) { return !a.title.startsWith("User talk:") });
     var mainspace = noredirects.filter(function (a) { return a.ns == 0 }).length;
     var newlen = filtered.length;
    var mainspacetalk = noredirects.filter(function (a) { return a.ns == 1 }).length;
     console.log(data)
     var meta = noredirects.filter(function (a) { return a.ns == 4 || a.ns == 12 }).length;
    var metatalk = noredirects.filter(function (a) { return a.ns == 5 || a.ns == 13 }).length;
     var mediawiki = noredirects.filter(function (a) { return a.ns == 8 }).length;
     var mediawikitalk = noredirects.filter(function (a) { return a.ns == 9 }).length;
     $("#user-edits-name").attr("disabled", null)
     $("#user-edits-name").attr("disabled", null)
     $("#user-edits-button").attr("disabled", null)
     $("#user-edits-button").attr("disabled", null)
     $("#load").html(oldlen > 0 ? "Found " + newlen + " actual edits (" + oldlen + " total edits)<br>" + Math.floor(newlen / oldlen * 100) + "% of edits are outside the user namespace" : "The user either doesn't exist or didn't make any edits");
     $("#load").html(alledits.length > 0 ?  
        `<b>Found ${alledits.length} edits</b><br/>
        <ul>
            <li><b>${noredirects.length} (${Math.floor(noredirects.length / alledits.length * 100)}%)</b> edits that aren't new redirects</li>
            <li style="list-style-image: none; list-style-type: none;"><b>(The following edit counts exclude new redirect creations)</b></li>
            <li><b>${filtered    } (${Math.floor(filtered      / noredirects.length * 100)}%)</b> edits outside the user page/talk namespace</li>
            <li><b>${page        } (${Math.floor(page          / noredirects.length * 100)}%)</b> page edits (excludes talk pages)</li>
            <li><b>${talk        } (${Math.floor(talk          / noredirects.length * 100)}%)</b> talk page edits</li>
            <li><b>${mainspace    } (${Math.floor(mainspace    / noredirects.length * 100)}%)</b> mainspace edits</li>
            <li><b>${mainspacetalk} (${Math.floor(mainspacetalk / noredirects.length * 100)}%)</b> mainspace talk page edits</li>
            <li><b>${meta        } (${Math.floor(meta          / noredirects.length * 100)}%)</b> meta edits (Inkipedia:, Help:)</li>
            <li><b>${metatalk    } (${Math.floor(metatalk      / noredirects.length * 100)}%)</b> meta talk page edits (Inkipedia talk:, Help talk:)</li>
            <li><b>${mediawiki    } (${Math.floor(mediawiki    / noredirects.length * 100)}%)</b> MediaWiki: edits</li>
            <li><b>${mediawikitalk} (${Math.floor(mediawikitalk / noredirects.length * 100)}%)</b> MediaWiki talk: edits</li>
        </ul>`
        : "The user either doesn't exist or didn't make any edits that are visible to you");
     $("#load").css("display", "");
     $("#load").css("display", "");
}
}

Latest revision as of 15:36, 7 December 2020

//<input id="user-edits-name" type="text" placeholder="Username"/>
//<input id="user-edits-button" type="button" value="Display edit count"/>

//Load get params
var url = new URL(window.location.href);
var user = url.searchParams.get("user");

var alledits = [];
$("#controls").append('<input id="user-edits-name" type="text" placeholder="Username"/> <input id="user-edits-button" type="button" value="Display edit count"/>');
$("#load").css("display", "none");
$("#user-edits-button").click(function () {
    $("#user-edits-name").attr("disabled", "")
    $("#user-edits-button").attr("disabled", "")
    alledits = [];
    new mw.Api().get({
        "action": "query",
        "list": "usercontribs",
        "uclimit": "max",
        "ucprop": "tags|title",
        "ucuser": $("#user-edits-name")[0].value
    })
        .done(done)
        .fail(function (err) {
            $("#load").html("An unexpected error occured!");
            $("#load").css("display", "");
            console.log(err)
        })
})
if(user != null){
    $("#user-edits-name")[0].value = user;
    $("#user-edits-button").click();
}
function done(data) {
    alledits = alledits.concat(data.query.usercontribs);
    if (data.continue != null) {
        $("#load").html(`Loading edits... (${alledits.length}/?)<br/>`);
        new mw.Api().get({
            "action": "query",
            "list": "usercontribs",
            "uclimit": "max",
            "ucprop": "tags|title",
            "ucuser": $("#user-edits-name")[0].value,
            "uccontinue": data.continue.uccontinue
        })
            .done(done)
            .fail(function (err) {
                $("#load").html("An unexpected error occured!");
                $("#load").css("display", "");
                console.log(err)
            })
        return;
    }
    var noredirects = alledits.filter(function (a) { return !a.tags.includes("mw-new-redirect") });
    var filtered = noredirects.filter(function (a) { return a.ns != 2 && a.ns != 3 }).length;
    var page = noredirects.filter(function (a) { return a.ns % 2 == 0 }).length;
    var talk = noredirects.filter(function (a) { return a.ns % 2 == 1 }).length;
    var mainspace = noredirects.filter(function (a) { return a.ns == 0 }).length;
    var mainspacetalk = noredirects.filter(function (a) { return a.ns == 1 }).length;
    var meta = noredirects.filter(function (a) { return a.ns == 4 || a.ns == 12 }).length;
    var metatalk = noredirects.filter(function (a) { return a.ns == 5 || a.ns == 13 }).length;
    var mediawiki = noredirects.filter(function (a) { return a.ns == 8 }).length;
    var mediawikitalk = noredirects.filter(function (a) { return a.ns == 9 }).length;
    $("#user-edits-name").attr("disabled", null)
    $("#user-edits-button").attr("disabled", null)
    $("#load").html(alledits.length > 0 ? 
        `<b>Found ${alledits.length} edits</b><br/>
        <ul>
            <li><b>${noredirects.length} (${Math.floor(noredirects.length / alledits.length * 100)}%)</b> edits that aren't new redirects</li>
            <li style="list-style-image: none; list-style-type: none;"><b>(The following edit counts exclude new redirect creations)</b></li>
            <li><b>${filtered     } (${Math.floor(filtered      / noredirects.length * 100)}%)</b> edits outside the user page/talk namespace</li>
            <li><b>${page         } (${Math.floor(page          / noredirects.length * 100)}%)</b> page edits (excludes talk pages)</li>
            <li><b>${talk         } (${Math.floor(talk          / noredirects.length * 100)}%)</b> talk page edits</li>
            <li><b>${mainspace    } (${Math.floor(mainspace     / noredirects.length * 100)}%)</b> mainspace edits</li>
            <li><b>${mainspacetalk} (${Math.floor(mainspacetalk / noredirects.length * 100)}%)</b> mainspace talk page edits</li>
            <li><b>${meta         } (${Math.floor(meta          / noredirects.length * 100)}%)</b> meta edits (Inkipedia:, Help:)</li>
            <li><b>${metatalk     } (${Math.floor(metatalk      / noredirects.length * 100)}%)</b> meta talk page edits (Inkipedia talk:, Help talk:)</li>
            <li><b>${mediawiki    } (${Math.floor(mediawiki     / noredirects.length * 100)}%)</b> MediaWiki: edits</li>
            <li><b>${mediawikitalk} (${Math.floor(mediawikitalk / noredirects.length * 100)}%)</b> MediaWiki talk: edits</li>
        </ul>`
        : "The user either doesn't exist or didn't make any edits that are visible to you");
    $("#load").css("display", "");
}