User:Technical 13/SandBox/getPageViews.js: Difference between revisions

Content deleted Content added
Technical 13 (talk | contribs)
Currently not pulling pageview information from stats.grok.uk Will debug more later...
 
Technical 13 (talk | contribs)
http: has to be specified to get anything back... I'm set up to warn about mixed content instead of block it... SO, this "should" work.
 
(5 intermediate revisions by the same user not shown)
Line 1:
// Licensed under the MIT license; theopolismewiki@gmail.com
// TODO -- make a [[morebits.js]] version of this input sequence
( function ( $, mw ) {
var lang = /*prompt("Get results in what language?", */"en"/*)*/;
function sum ( obj ) {
var pageNames = /*prompt("Page names to get results for?", /*"Augustus Pablo|Avian Java|Bentley Java|Chrysler Java|Coffee|Coffee County, Alabama|HMS Java|Java|Java, Alabama|Java, New York|Java, Ohio|Java, South Dakota|Java, São Tomé and Príncipe|Java, Virginia|Java-eiland|JavaScript|Java (Martin Mystère)|Java (band)|Java (board game)|Java (chicken)|Java (cigarette)|Java (composition)|Java (dance)|Java (programming language)|Java (software platform)|Java (town)|Java District|Java Joel|Java Man|Java Road|Java Sea|Java Trench|Java class cruiser|Java coffee|Java virtual machine|Javanese (disambiguation)|Javanese alphabet|List of The Tribe characters|Metamorpho|SS Java|USS Java (1815)"*/"foo"/*)*/;
var total;
if (pageNames.indexOf("|") === -1) {
for (var prop in obj ) {
pageNames = new Array(pageNames);
if ( obj.hasOwnProperty( prop ) ) {
} else {
total += parseInt( obj[prop], 10 );
pageNames = pageNames.split("|");
}
var rangeToGet = new Array(30, 60, 90);
var visitRank = 0;
var pageHits = 0;
var hits30 = 0;
var hits60 = 0;
var hits90 = 0;
var fullResults = [];
 
function displayAnswer(){
var table = "{| class=\"collapsible collapsed sortable\" width=\"95%\" border=\"1\"";
table += "\n|-\n! Page Name !! width=\"15%\"| Hits in 30 days !! width=\"15%\"| Hits in 60 days !! width=\"15%\"| Hits in 90 days !! width=\"5%\"| Rank";
for(var pageName in pageNames){
table += "\n|- style=\"text-align: center;\"";
table += "\n| style=\"text-align: left; font-weight: bold;\" | [[" + pageNames[pageName] + "]] ";
table += "|| [http://stats.grok.uk/" + lang + "/latest30/" + encodeURIComponent(pageNames[pageName]) + " " + fullResults[pageName].hits30 + "] ";
table += "|| [http://stats.grok.uk/" + lang + "/latest60/" + encodeURIComponent(pageNames[pageName]) + " " + fullResults[pageName].hits60 + "] ";
table += "|| [http://stats.grok.uk/" + lang + "/latest90/" + encodeURIComponent(pageNames[pageName]) + " " + fullResults[pageName].hits90 + "] ";
table += "|| " + fullResults[pageName].rank;
}
table += "\n|}";
alert(table);
}
 
/* temp set to only pull hits30 for debugging */
var daysToGet = 0;
var rangeToGet = [];
rangeToGet[daysToGet] = 30;
/* temp set to only pull [[foo]] for debugging */
var pageName = 0;
 
//for(var pageName in pageNames){
// for(var daysToGet in rangeToGet){
console.info("Attempting to get data from: http://stats.grok.se/json/" + lang + "/latest" + rangeToGet[daysToGet] + "/" + encodeURIComponent(pageNames[pageName]));
$.ajax({
url: 'http://stats.grok.se/json/' + lang + '/latest' + rangeToGet[daysToGet] + '/' + encodeURIComponent(pageNames[pageName]),
dataType: 'json',
success: function(getStats){
for(var date in getStats.daily_views){
pageHits += getStats.daily_views[date];
}
console.log("Going to try to assign " + pageHits + " to hits" + rangeToGet[daysToGet]);
switch(rangeToGet[daysToGet]){
case 30:
visitRank = getStats.rank;
hits30 = pageHits;
break;
case 60:
hits60 = pageHits;
break;
case 90:
hits90 = pageHits;
break;
default:
break;
}
pageHits = 0;
},
fail: function(errorMsg){
alert("Failed to get results for: http://stats.grok.se/json/" + lang + "/latest" + rangeToGet[daysToGet] + "/" + encodeURIComponent(pageNames[pageName]) + "\nInstead received:" + errorMsg);
}
});
return total;
// }
}
console.warn("Setting fullResults[" + pageName + "] = {\"rank\": " + visitRank + ", \"hits30\": " + hits30 + ", \"hits60\": " + hits60 + ", \"hits90\": " + hits90 + "};");
function getPageData( pagename, language ) {
fullResults[pageName] = {"rank": visitRank, "hits30": hits30, "hits60": hits60, "hits90": hits90};
var deferred = $.Deferred(),
console.error("Results are %o", fullResults[pageName]);
request3 = $.getJSON( 'http://stats.grok.se/json/' + language + '/latest30/' + pagename ),
visitRank = 0;
request6 = $.getJSON( 'http://stats.grok.se/json/' + language + '/latest60/' + pagename ),
hits30 = 0;
request9 = $.getJSON( 'http://stats.grok.se/json/' + language + '/latest90/' + pagename );
hits60 = 0;
$.when( request3, request6, request9 ).done( function ( data3, data6, data9 ) {
hits90 = 0;
deferred.resolve( {
if(pageName === (pageNames.length -1)){
title: data3.title,
displayAnswer();
rank: data3.rank,
hits30: sum( data3.daily_views ),
hits60: sum( data6.daily_views ),
hits90: sum( data9.daily_views )
} );
} );
return deferred;
}
function getPagesTable( pages, language ) {
var table = $( '<div>' ), requests = [];
$.each( pages, function ( i, page ) {
requests.push( getPageData( page, language ) );
} );
$.when.apply( $, requests ).done( function () {
$.each( requests, function ( i, request ) {
request.done( function ( data ) {
table.append( $( '<div>' ).text( JSON.stringify( data ) ) );
} );
} );
} );
}
var pages = prompt( 'Enter page names, separated by pipes', mw.config.get( 'wgTitle' ) ).split( '|' ),
//}
language = mw.config.get( 'wgPageContentLanguage' );
$( '#mw-content-text' ).prepend( getPagesTable( pages, language ) );
} )( jQuery, mediaWiki );