Jump to content

User:Dudemanfellabra/Sandbox.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Dudemanfellabra (talk | contribs) at 08:36, 18 April 2016 (debug). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
var NRISEditors={"":[0,"test"]}    // "name":[total,title1,title2,...]
var NRISPages=[]
var TotalTested=0

function NRIStest() {
    if (mw.config.get('wgPageName')!="User:NationalRegisterBot/NRISOnly/All")  return;

    var button=document.createElement("input")
    button.setAttribute("type", "button");
    button.setAttribute("value", "Who created these?");
    button.setAttribute("id", "testbutton");
    button.setAttribute("onclick", "TestQueryEditors()");
    var thediv=document.getElementById('NRISOnly-div')
    if (thediv!=null) thediv.parentNode.insertBefore(button, thediv)

    var ProgressDiv = document.createElement("div")
    ProgressDiv.setAttribute("id", "ProgressDiv")
    ProgressDiv.setAttribute("style", "width:100px; border:1px solid black; padding:5px; background:#ffffff")
    button.parentNode.insertBefore(ProgressDiv, button)
}

function TestQueryEditors() {
    var button=document.getElementById("testbutton")
    button.disabled=true;
    var content=document.getElementById("NRISOnly-div")
    var list=content.getElementsByClassName("refbegin")

    for (var j=0; j<list.length; j++) {
        var pages=list[j].getElementsByTagName("li")
        for (var i=0; i<pages.length; i++) {
            NRISPages.push(pages[i].firstChild.title)
        }
    }

    TestQueryNextEditor(0)
}

function TestQueryNextEditor(current) {
    if (current==NRISPages.length) return;

    $.ajax({
        dataType: "json",
        url: mw.util.wikiScript('api'),
        data: {
            format: 'json',
            action: 'query',
            prop: 'revisions',
            rvprop: 'user|timestamp',
            rvlimit: '1',
            rvdir: 'newer',
            titles: NRISPages[current],
            indexpageids: true
        },
        error: function(ArticlejsonObject,status,errorThrown) {ArticlejsonObject.errorThrown=errorThrown},
        complete: function(ArticlejsonObject,status) {
            TestQueryNextEditorComplete(ArticlejsonObject,status,current)
        }
    });

    setTimeout(function(){
        TestQueryNextEditor(current+1)
    }, 10);
    return;
}

function TestQueryNextEditorComplete(ArticlejsonObject,status,current) {
    if (status!="success") {
        setTimeout(function(){ // try again after delay if rate limit reached
            TestQueryNextEditor(current)
        }, 250);
        return;
    }

    var ProgressDiv=document.getElementById("ProgressDiv")
    ProgressDiv.innerHTML=TotalTested

    var output=JSON.parse(ArticlejsonObject.responseText)
    if (typeof output.query=="undefined") {alert(current+"\n"+NRISPages[current])}
    for (var page in output.query.pages) {
        var user = output.query.pages[page].revisions[0]['user'];
        var timestamp = output.query.pages[page].revisions[0]['timestamp'];
    }
    timestamp = timestamp.replace("T","&nbsp;– ").replace("Z","&nbsp;UTC")

    var match=false
    for (var editor in NRISEditors) {
        if (editor==user) {
            match=true
            NRISEditors[user][0]++
            NRISEditors[user].push(NRISPages[current])
        }
    }
    if (!match) NRISEditors[user]=[1,NRISPages[current]]

    TotalTested++
    if (TotalTested==NRISPages.length) TestEditorComplete()
}

function TestEditorComplete() {
    var popup = open("");
    var pre = popup.document.createElement("pre");
    pre.innerHTML=JSON.stringify(NRISEditors,null,4)

    popup.document.body.appendChild(pre);
}

$(window).load(NRIStest);