Jump to content

User:Dudemanfellabra/NRHPProgressHistory.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
/* The following code produces the data found at [[Wikipedia:WikiProject National Register of Historic Places/Progress/History]]
   by looking back through old revisions of the [[WP:NRHPPROGRESS]] page. The data can then be used to create graphs
*/

var StatesArray=[
    ["Alabama","AL"],
    ["Alaska","AK"],
    ["Arizona","AZ"],
    ["Arkansas","AR"],
    ["California","CA"],
    ["Colorado","CO"],
    ["Connecticut","CT"],
    ["Delaware","DE"],
    ["District of Columbia","DC"],
    ["Florida","FL"],
    ["Georgia","GA"],
    ["Hawaii","HI"],
    ["Idaho","ID"],
    ["Illinois","IL"],
    ["Indiana","IN"],
    ["Iowa","IA"],
    ["Kansas","KS"],
    ["Kentucky","KY"],
    ["Louisiana","LA"],
    ["Maine","ME"],
    ["Maryland","MD"],
    ["Massachusetts","MA"],
    ["Michigan","MI"],
    ["Minnesota","MN"],
    ["Mississippi","MS"],
    ["Missouri","MO"],
    ["Montana","MT"],
    ["Nebraska","NE"],
    ["Nevada","NV"],
    ["New Hampshire","NH"],
    ["New Jersey","NJ"],
    ["New Mexico","NM"],
    ["New York","NY"],
    ["North Carolina","NC"],
    ["North Dakota","ND"],
    ["Ohio","OH"],
    ["Oklahoma","OK"],
    ["Oregon","OR"],
    ["Pennsylvania","PA"],
    ["Rhode Island","RI"],
    ["South Carolina","SC"],
    ["South Dakota","SD"],
    ["Tennessee","TN"],
    ["Texas","TX"],
    ["Utah","UT"],
    ["Vermont","VT"],
    ["Virginia","VA"],
    ["Washington","WA"],
    ["West Virginia","WV"],
    ["Wisconsin","WI"],
    ["Wyoming","WY"],
    ["Puerto Rico","PR"],
    ["Guam","GU"],
    ["Virgin Islands","VI"],
    ["Northern Mariana Islands","MP"],
    ["American Samoa","AS"],
    ["Federated States of Micronesia","FM"],
    ["Palau","PW"],
    ["Marshall Islands","MH"],
    ["Minor Outlying Islands","UM"],
    ];

function ProgressPageHistoryButton() {
    if (mw.config.get('wgPageName')!="Wikipedia:WikiProject_National_Register_of_Historic_Places/Progress/History") return
    var button=document.createElement("input")
    button.setAttribute("type", "button");
    button.setAttribute("value", "Get Progress Page History");
    button.setAttribute("id", "historybutton");
    button.setAttribute("onclick", "HistoryButtonClick()");
    var content=document.getElementById('mw-content-text')

    content.parentNode.insertBefore(button, content)
}


function HistoryButtonClick() {
    var button=document.getElementById("historybutton")
    button.value="Working..."
    button.disabled=true

    var ProgressDiv = document.createElement('div')
    ProgressDiv.setAttribute('id', 'ProgressDiv')
    ProgressDiv.setAttribute("style", "width:500px; border:1px solid black; padding:5px")
    button.parentNode.insertBefore(ProgressDiv, button)
    ProgressDiv.innerHTML = "Querying old edits"
    GetProgressPageHistory()
}

function GetProgressPageHistory() {
    var ProgressDiv = document.getElementById("ProgressDiv")

    var Updates = [];
    var wikitext = ''
    ProgressDiv.innerHTML+="."

    var RevsWithMapsSection = JSON.parse(
        $.ajax({
            dataType: "json",
            url: mw.util.wikiScript('api'),
            data: {
                format: 'json',
                rawcontinue: 'true',
                action: 'query',
                prop: 'revisions',
                rvprop: 'timestamp|comment|content',
                rvlimit: 'max',
                rvendid: '568713090',
                rvsection: '2',
                titles: 'Wikipedia:WikiProject National Register of Historic Places/Progress'
            },
            async:false
        })
        .responseText
    );
    for (var r in RevsWithMapsSection.query.pages["38959189"].revisions) {
        if (RevsWithMapsSection.query.pages["38959189"].revisions[r].comment.indexOf("Updating county data as of ")>-1) {
            Updates[Updates.length] = [RevsWithMapsSection.query.pages["38959189"].revisions[r].timestamp,RevsWithMapsSection.query.pages["38959189"].revisions[r]["*"]]
        }
    }
    if (RevsWithMapsSection["query-continue"]) {
        var rvcontinue = RevsWithMapsSection["query-continue"].revisions.rvcontinue
        while (true) {
            ProgressDiv.innerHTML+="."
            var RevsWithMapsSection = JSON.parse(
                $.ajax({
                    dataType: "json",
                    url: mw.util.wikiScript('api'),
                    data: {
                        format: 'json',
                        action: 'query',
                        prop: 'revisions',
                        rvprop: 'timestamp|comment|content',
                        rvlimit: 'max',
                        rvcontinue: rvcontinue,
                        rawcontinue: 'true',
                        rvendid: '568713090',
                        rvsection: '2',
                        titles: 'Wikipedia:WikiProject National Register of Historic Places/Progress'
                    },
                    async:false
                })
                .responseText
            );
            for (var r in RevsWithMapsSection.query.pages["38959189"].revisions) {
                if (RevsWithMapsSection.query.pages["38959189"].revisions[r].comment.indexOf("Updating county data as of ")>-1) {
                    Updates[Updates.length] = [RevsWithMapsSection.query.pages["38959189"].revisions[r].timestamp,RevsWithMapsSection.query.pages["38959189"].revisions[r]["*"]]
                }
            }
            if (RevsWithMapsSection["query-continue"]) {
                rvcontinue = RevsWithMapsSection["query-continue"].revisions.rvcontinue
            } else {
                break;
            }
        }
    }
    ProgressDiv.innerHTML+="."
    var RevsWithoutMapsSection = JSON.parse(
        $.ajax({
            dataType: "json",
            url: mw.util.wikiScript('api'),
            data: {
                format: 'json',
                action: 'query',
                rawcontinue: 'true',
                prop: 'revisions',
                rvprop: 'timestamp|comment|content',
                rvlimit: 'max',
                rvstartid: '568219687',
                rvendid: '554210647',
                rvsection: '1',
                titles: 'Wikipedia:WikiProject National Register of Historic Places/Progress'
            },
            async:false
        })
        .responseText
    );
    for (var r in RevsWithoutMapsSection.query.pages["38959189"].revisions) {
        if (RevsWithoutMapsSection.query.pages["38959189"].revisions[r].comment.indexOf("Updating county data as of ")>-1) {
            Updates[Updates.length] = [RevsWithoutMapsSection.query.pages["38959189"].revisions[r].timestamp,RevsWithoutMapsSection.query.pages["38959189"].revisions[r]["*"]]
        }
    }
    if (RevsWithoutMapsSection["query-continue"]) {
        var rvcontinue = RevsWithoutMapsSection["query-continue"].revisions.rvcontinue
        while (true) {
            ProgressDiv.innerHTML+="."
            var RevsWithoutMapsSection = JSON.parse(
                $.ajax({
                    dataType: "json",
                    url: mw.util.wikiScript('api'),
                    data: {
                        format: 'json',
                        rawcontinue: 'true',
                        action: 'query',
                        prop: 'revisions',
                        rvprop: 'timestamp|comment|content',
                        rvlimit: 'max',
                        rvstartid: '568219687',
                        rvendid: '554210647',
                        rvcontinue: rvcontinue,
                        rvsection: '1',
                        titles: 'Wikipedia:WikiProject National Register of Historic Places/Progress'
                    },
                    async:false
                })
                .responseText
            );
            for (var r in RevsWithoutMapsSection.query.pages["38959189"].revisions) {
                if (RevsWithoutMapsSection.query.pages["38959189"].revisions[r].comment.indexOf("Updating county data as of ")>-1) {
                    Updates[Updates.length] = [RevsWithoutMapsSection.query.pages["38959189"].revisions[r].timestamp,RevsWithoutMapsSection.query.pages["38959189"].revisions[r]["*"]]
                }
            }
            if (RevsWithoutMapsSection["query-continue"]) {
                rvcontinue = RevsWithoutMapsSection["query-continue"].revisions.rvcontinue
            } else {
                break;
            }
        }
    }
    ProgressDiv.innerHTML+="Done!<br>Compiling data..."
    for (var i=0; i<Updates.length; i++) {
        if (Updates[i][0]=="2013-05-23T07:37:05Z"||Updates[i][0]=="2013-05-23T07:32:15Z"||Updates[i][0]=="2013-10-14T01:15:21Z"||Updates[i][0]=="2013-05-29T07:14:43Z") {Updates.splice(i,1); i--; continue}   // get rid of error/test updates
        var thisrevtext=Updates[i][1]
        Updates[i][1]=[];
        Updates[i][1][0]=thisrevtext.match(/Total:(.|\n)*?\|}/g)[0].replace(/\n/g,"").replace(/!/g,"|")
        for (var j=0; j<StatesArray.length; j++) {
            var regex=new RegExp("\\|[ ]*?(\\[\\[)?.*?"+StatesArray[j][0]+"(\\]\\])?[ ]*?\\n(.|\\n)*?\\|--", "g")
            Updates[i][1][Updates[i][1].length]=thisrevtext.match(regex)[0]
            regex=new RegExp("\\|[ ]*?(\\[\\[)?.*?"+StatesArray[j][0]+"(\\]\\])?[ ]*?\\n", "g")
            Updates[i][1][Updates[i][1].length-1]=Updates[i][1][Updates[i][1].length-1].replace(regex,"").replace(/\n/g,"")    // drop state name
        }
        var d=new Date(Updates[i][0]);
        var timestampstr=d.getUTCFullYear().toString()
        var month=parseFloat(d.getUTCMonth()+1).toString()
        if (month.length<2) month="0"+month
        timestampstr+=month
        var day=d.getUTCDate().toString()
        if (day.length<2) day="0"+day
        timestampstr+=day
        Updates[i][0]=timestampstr
    }

    wikitext+='<textarea style="width: 100%; height: 300px" onclick="this.focus();this.select()" wrap="off">\n# 1 Date            2 Total             3 Illustrated       4 %Illustrated      5 Articled          6 %Articled         7 Stubs             8 NRIS-only         9 Start+            10 %Start+          11 Unassessed       12 Untagged         13 Net_Quality      '
    var currentColumn=14
    for (var i=0; i<StatesArray.length; i++) {
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Total        '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Illustrated  '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_%Illustrated '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Articled     '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_%Articled    '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Stubs        '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_NRIS-only    '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Start+       '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_%Start+      '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Unassessed   '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Untagged     '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
        wikitext+=currentColumn+' '+StatesArray[i][1]+'_Net_Quality  '
        if (currentColumn<100) wikitext+=' '
        currentColumn++
    }
    wikitext+='\n'
    for (var i=0; i<Updates.length; i++) {
        wikitext+=Updates[i][0]+"            "
        for (var j=0; j<Updates[i][1].length; j++) {
            // Total
            wikitext+=Updates[i][1][j].split("|")[1].replace(/,/g,"").trim()
            for (var k=0; k<20-Updates[i][1][j].split("|")[1].replace(/,/g,"").trim().length; k++) {wikitext+=" "}

            // Illustrated
            wikitext+=Updates[i][1][j].split("|")[2].replace(/,/g,"").trim()
            for (var k=0; k<20-Updates[i][1][j].split("|")[2].replace(/,/g,"").trim().length; k++) {wikitext+=" "}

            // %Illustrated
            wikitext+=Updates[i][1][j].split("|")[3].replace(/%/g,"").trim()
            for (var k=0; k<20-Updates[i][1][j].split("|")[3].replace(/%/g,"").trim().length; k++) {wikitext+=" "}

            // Articled
            wikitext+=Updates[i][1][j].split("|")[4].replace(/,/g,"").trim()
            for (var k=0; k<20-Updates[i][1][j].split("|")[4].replace(/,/g,"").trim().length; k++) {wikitext+=" "}

            // %Articled
            wikitext+=Updates[i][1][j].split("|")[5].replace(/%/g,"").trim()
            for (var k=0; k<20-Updates[i][1][j].split("|")[5].replace(/%/g,"").trim().length; k++) {wikitext+=" "}

            // Stubs
            if (parseFloat(Updates[i][0])>=20130901) {
                wikitext+=Updates[i][1][j].split("|")[6].replace(/,/g,"").trim()
                if (Updates[i][1][j].split("|")[6].replace(/,/g,"").trim().length==0) {
                    wikitext+="-"
                } else {
                    wikitext+=" "
                }
                for (var k=0; k<19-Updates[i][1][j].split("|")[6].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
            } else {
                wikitext+="-                   "
            }

            // NRIS-only
            if (parseFloat(Updates[i][0])>20131120) {
                if (parseFloat(Updates[i][0])==20131121) {
                    wikitext+="-                   "
                } else {
                    wikitext+=Updates[i][1][j].split("|")[7].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[7].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[7].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                }
            } else {
                wikitext+="-                   "
            }

            // Start+
            if (parseFloat(Updates[i][0])>=20130901) {
                if (parseFloat(Updates[i][0])>20131120) {
                    wikitext+=Updates[i][1][j].split("|")[8].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[8].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[8].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                } else {
                    wikitext+=Updates[i][1][j].split("|")[7].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[7].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[7].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                }
            } else {
                wikitext+="-                   "
            }

            // %Start+
            if (parseFloat(Updates[i][0])>=20130901) {
                if (parseFloat(Updates[i][0])>20131120) {
                    wikitext+=Updates[i][1][j].split("|")[9].replace(/%/g,"").trim()
                    if (Updates[i][1][j].split("|")[9].replace(/%/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[9].replace(/%/g,"").trim().length; k++) {wikitext+=" "}
                } else {
                    wikitext+=Updates[i][1][j].split("|")[8].replace(/%/g,"").trim()
                    if (Updates[i][1][j].split("|")[8].replace(/%/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[8].replace(/%/g,"").trim().length; k++) {wikitext+=" "}
                }
            } else {
                wikitext+="-                   "
            }

            // Unassessed
            if (parseFloat(Updates[i][0])>=20130901) {
                if (parseFloat(Updates[i][0])>20131120) {
                    wikitext+=Updates[i][1][j].split("|")[10].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[10].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[10].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                } else {
                    wikitext+=Updates[i][1][j].split("|")[9].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[9].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[9].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                }
            } else {
                wikitext+="-                   "
            }

            // Untagged
            if (parseFloat(Updates[i][0])>=20130901) {
                if (parseFloat(Updates[i][0])>20131120) {
                    wikitext+=Updates[i][1][j].split("|")[11].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[11].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[11].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                } else {
                    wikitext+=Updates[i][1][j].split("|")[10].replace(/,/g,"").trim()
                    if (Updates[i][1][j].split("|")[10].replace(/,/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                    for (var k=0; k<19-Updates[i][1][j].split("|")[10].replace(/,/g,"").trim().length; k++) {wikitext+=" "}
                }
            } else {
                wikitext+="-                   "
            }

            // Net Quality
            if (parseFloat(Updates[i][0])>20131121) {
                wikitext+=Updates[i][1][j].split("|")[12].replace(/%/g,"").trim()
                    if (Updates[i][1][j].split("|")[12].replace(/%/g,"").trim().length==0) {
                        wikitext+="-"
                    } else {
                        wikitext+=" "
                    }
                for (var k=0; k<19-Updates[i][1][j].split("|")[12].replace(/%/g,"").trim().length; k++) {wikitext+=" "}
            } else {
                wikitext+="-                   "
            }

        }
        wikitext+="\n"
    }
    wikitext+='</textarea>\n\n'

    ProgressDiv.innerHTML+="Done!<br>Querying FA/GA stats"
    var FA_Updates = [];
    var GA_Updates = [];
    ProgressDiv.innerHTML+="."
    var FA_Revs = JSON.parse(
        $.ajax({
            dataType: "json",
            url: mw.util.wikiScript('api'),
            data: {
                format: 'json',
                rawcontinue: 'true',
                action: 'query',
                prop: 'revisions',
                rvprop: 'timestamp|user|content',
                rvlimit: 'max',
                rvuser: 'JL-Bot',
                titles: 'Wikipedia:WikiProject National Register of Historic Places/Recognized content'
            },
            async:false
        })
        .responseText
    );
    for (var r in FA_Revs.query.pages["32792745"].revisions) {
        if (FA_Revs.query.pages["32792745"].revisions[r].timestamp,FA_Revs.query.pages["32792745"].revisions[r]["timestamp"]!="2015-05-10T17:12:52Z") {
            FA_Updates[FA_Updates.length] = [FA_Revs.query.pages["32792745"].revisions[r].timestamp,FA_Revs.query.pages["32792745"].revisions[r]["*"]]
        }
    }
    if (FA_Revs["query-continue"]) {
        var rvcontinue = FA_Revs["query-continue"].revisions.rvcontinue
        while (true) {
            ProgressDiv.innerHTML+="."
            var FA_Revs = JSON.parse(
                $.ajax({
                    dataType: "json",
                    url: mw.util.wikiScript('api'),
                    data: {
                        format: 'json',
                        rawcontinue: 'true',
                        action: 'query',
                        prop: 'revisions',
                        rvprop: 'timestamp|user|content',
                        rvlimit: 'max',
                        rvcontinue: rvcontinue,
                        rvuser: 'JL-Bot',
                        titles: 'Wikipedia:WikiProject National Register of Historic Places/Recognized content'
                    },
                    async:false
                })
                .responseText
            );
            for (var r in FA_Revs.query.pages["32792745"].revisions) {
                if (FA_Revs.query.pages["32792745"].revisions[r].timestamp,FA_Revs.query.pages["32792745"].revisions[r]["timestamp"]!="2015-05-10T17:12:52Z") {
                    FA_Updates[FA_Updates.length] = [FA_Revs.query.pages["32792745"].revisions[r].timestamp,FA_Revs.query.pages["32792745"].revisions[r]["*"]]
                }
            }
            if (FA_Revs["query-continue"]) {
                rvcontinue = FA_Revs["query-continue"].revisions.rvcontinue
            } else {
                break;
            }
        }
    }
    ProgressDiv.innerHTML+="."
    var GA_Revs = JSON.parse(
        $.ajax({
            dataType: "json",
            url: mw.util.wikiScript('api'),
            data: {
                format: 'json',
                rawcontinue: 'true',
                action: 'query',
                prop: 'revisions',
                rvprop: 'timestamp|user|content',
                rvlimit: 'max',
                rvuser: 'JL-Bot',
                titles: 'Wikipedia:WikiProject National Register of Historic Places/GA'
            },
            async:false
        })
        .responseText
    );
    for (var r in GA_Revs.query.pages["32766443"].revisions) {
        if (GA_Revs.query.pages["32766443"].revisions[r].timestamp,GA_Revs.query.pages["32766443"].revisions[r]["timestamp"]!="2015-05-10T17:12:45Z") {
            GA_Updates[GA_Updates.length] = [GA_Revs.query.pages["32766443"].revisions[r].timestamp,GA_Revs.query.pages["32766443"].revisions[r]["*"]]
        }
    }
    if (GA_Revs["query-continue"]) {
        var rvcontinue = GA_Revs["query-continue"].revisions.rvcontinue
        while (true) {
            ProgressDiv.innerHTML+="."
            var GA_Revs = JSON.parse(
                $.ajax({
                    dataType: "json",
                    url: mw.util.wikiScript('api'),
                    data: {
                        format: 'json',
                        rawcontinue: 'true',
                        action: 'query',
                        prop: 'revisions',
                        rvprop: 'timestamp|user|content',
                        rvlimit: 'max',
                        rvcontinue: rvcontinue,
                        rvuser: 'JL-Bot',
                        titles: 'Wikipedia:WikiProject National Register of Historic Places/GA'
                    },
                    async:false
                })
                .responseText
            );
            for (var r in GA_Revs.query.pages["32766443"].revisions) {
                if (GA_Revs.query.pages["32766443"].revisions[r].timestamp,GA_Revs.query.pages["32766443"].revisions[r]["timestamp"]!="2015-05-10T17:12:45Z") {
                    GA_Updates[GA_Updates.length] = [GA_Revs.query.pages["32766443"].revisions[r].timestamp,GA_Revs.query.pages["32766443"].revisions[r]["*"]]
                }
            }
            if (GA_Revs["query-continue"]) {
                rvcontinue = GA_Revs["query-continue"].revisions.rvcontinue
            } else {
                break;
            }
        }
    }
    for (var i=0; i<FA_Updates.length; i++) {
        if (FA_Updates[i][0]=="2014-06-28T18:12:43Z") {FA_Updates.splice(i,1); i--; continue}   // get rid of error/test updates
        var thisrevtext=FA_Updates[i][1]
        var str="==={{Icon|FA}} Featured articles==="
        var FASectionBegin = thisrevtext.indexOf(str)
        thisrevtext=thisrevtext.substr(FASectionBegin,thisrevtext.indexOf("===",FASectionBegin+str.length)-FASectionBegin)
        FA_Updates[i][1]=thisrevtext.match(/\[\[.*?\]\]/g).length

        var d=new Date(FA_Updates[i][0]);
        var timestampstr=d.getUTCFullYear().toString()
        var month=parseFloat(d.getUTCMonth()+1).toString()
        if (month.length<2) month="0"+month
        timestampstr+=month
        var day=d.getUTCDate().toString()
        if (day.length<2) day="0"+day
        timestampstr+=day
        FA_Updates[i][0]=timestampstr
    }
    for (var i=0; i<GA_Updates.length; i++) {
        if (GA_Updates[i][0]=="2014-06-28T18:12:26Z") {GA_Updates.splice(i,1); i--; continue}   // get rid of error/test updates
        var thisrevtext=GA_Updates[i][1]
        GA_Updates[i][1]=thisrevtext.match(/\[\[.*?\]\]/g).length

        var d=new Date(GA_Updates[i][0]);
        var timestampstr=d.getUTCFullYear().toString()
        var month=parseFloat(d.getUTCMonth()+1).toString()
        if (month.length<2) month="0"+month
        timestampstr+=month
        var day=d.getUTCDate().toString()
        if (day.length<2) day="0"+day
        timestampstr+=day
        GA_Updates[i][0]=timestampstr
    }

    wikitext+='<textarea style="width: 100%; height: 300px" onclick="this.focus();this.select()" wrap="off">\n# 1 Date    2 FA_Count  3 Date      4 GA_Count  \n'
    for (var i=0; i<FA_Updates.length; i++) {
        wikitext+=FA_Updates[i][0]+"    "+FA_Updates[i][1]
        for (var k=0; k<12-FA_Updates[i][1].toString().length; k++) {wikitext+=" "}
        if (i<GA_Updates.length) wikitext+=GA_Updates[i][0]+"    "+GA_Updates[i][1]
        wikitext+="\n"
    }
    wikitext+='</textarea>\n\n'

    ProgressDiv.innerHTML+="Done! The results will now pop up in a new tab for copying."
    setTimeout(DumpData(wikitext), 5000);
}

function DumpData(wikitext) {
    var popup = open("");
    var div = popup.document.createElement("div");
    div.innerHTML=wikitext
    popup.document.body.appendChild(div);
}

$(ProgressPageHistoryButton)