MediaWiki:Gadget-indexPagesStatistics.js
Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
- Opera: premi Ctrl-F5.
$(function() {
var pagename = mw.config.get("wgPageName");
var basePageName = 'Pagina:' + mw.config.get('wgTitle') + '/';
var notExists = ' (la pagina non esiste)';
var elencoTesti = [];
var api = new mw.Api();
var countByUser = {};
var countByMonth = {};
var countByUserAndMonth = [];
var countLast10Days = {};
var countLast30Days = {};
var totalRevs = 0;
function highlight(claxx, clean) {
clean = typeof clean !== 'undefined' ? clean : true;
if (clean)
$('#pagineDellEdizioneInner a').removeClass('highlight-page');
pages = $('#pagineDellEdizioneInner .' + claxx);
if (pages.length) {
pages.addClass('highlight-page');
offset = $(pages.get(0)).offset().top;
screenTop = $(window).scrollTop();
screenBottom = screenTop + $(window).innerHeight();
if (offset < screenTop || offset > screenBottom) {
$('html, body').animate( {scrollTop: offset }, 'fast');
}
}
if (claxx == 'quality1')
highlight('new', false);
}
function highlightInterval(from, to) {
$('#pagineDellEdizioneInner a').removeClass('highlight-page');
for (i = from; i <= to; i++) {
$('#pagineDellEdizioneInner a[title="' + basePageName + i + '"]').addClass('highlight-page');
$('#pagineDellEdizioneInner a[title="' + basePageName + i + notExists + '"]').addClass('highlight-page');
}
}
// controlli in ns0 che la qualità corrisponda
if (mw.config.get("wgNamespaceNumber") === 0) {
qualityNs0 = $('#textquality').attr('class');
pagine75 = $('.tl-testo-quality.tl-testo-subpage').filter('[data-quality="75%"]').add('.prp-pagequality-3');
pagine50 = $('.tl-testo-quality.tl-testo-subpage').filter('[data-quality="50%"]').add('.prp-pagequality-2');
pagine25 = $('.tl-testo-quality.tl-testo-subpage').filter('[data-quality="25%"]').add('.prp-pagequality-1');
showAvviso = false;
showAvvisoOn = $();
if (qualityNs0 == '100%' && (pagine75.length > 0 || pagine50.length > 0 || pagine25.length > 0)) {
showAvviso = true;
showAvvisoOn = showAvvisoOn.add(pagine75).add(pagine50).add(pagine25);
}
if (qualityNs0 == '75%' && (pagine50.length > 0 || pagine25.length > 0)) {
showAvviso = true;
showAvvisoOn = showAvvisoOn.add(pagine50).add(pagine25);
}
if (qualityNs0 == '50%' && pagine25.length > 0) {
showAvviso = true;
showAvvisoOn = showAvvisoOn.add(pagine25);
}
if (showAvviso) {
showAvvisoOn.first().parent().attr('id', 'linkAvvisoSAL');
avviso = '<span class="index-pages-stat-avviso">Attenzione: il testo è stato portato al ' + qualityNs0
+ ', ma ci sono delle pagine non ancora al ' + qualityNs0 + ' (<a href="#linkAvvisoSAL">vedi</a>)</span>';
$('.quality-msg-text').html(avviso);
showAvvisoOn.parent().css('border', '2px solid red').attr('title', 'Pagina non ancora portata al '+ qualityNs0);
showAvvisoOn.parent().find('a').attr('title', 'Pagina non ancora portata al '+ qualityNs0);
}
}
if (mw.config.get("wgNamespaceNumber") === 110 && pagename.indexOf('/') == -1) {
if ($('.sommario').length == 0) {
$('.quality-msg-text').html($('.quality-msg-text').html() + ' Il campo Sommario deve ancora essere compilato ' +
'(<a href="/wiki/Aiuto:Gadget_CompilaSommario" target="_new">istruzioni</a>).');
}
calculateStatics(false);
}
// statistiche nelle pagine Indice e controllo che la qualità corrisponda
function calculateStatics(countVolumes) {
console.log('calculateStatics (including volumes? ' + countVolumes + ')');
if ($('.prp-index-pagelist .error').length > 0) {
return;
}
tot0 = $('.pagineDellEdizione .prp-pagequality-0').length;
totToCreate = $('.pagineDellEdizione a.new').length;
tot1 = $('.pagineDellEdizione .prp-pagequality-1').length + totToCreate;
tot2 = $('.pagineDellEdizione .prp-pagequality-2').length;
tot3 = $('.pagineDellEdizione .prp-pagequality-3').length;
tot4 = $('.pagineDellEdizione .prp-pagequality-4').length;
totale = tot1 + tot2 + tot3 + tot4;
percToCreate = Math.round(totToCreate / totale * 100) || 0;
perc1 = Math.round(tot1 / totale * 100) || 0;
perc2 = Math.round(tot2 / totale * 100) || 0;
perc3 = Math.round(tot3 / totale * 100) || 0;
perc4 = Math.round(tot4 / totale * 100) || 0;
declaredQuality = $('#dati').data('qualita');
effectiveQuality = '25%';
if (tot1 === 0) {
effectiveQuality = '50%';
if (tot2 === 0) {
effectiveQuality = '75%';
if (tot3 === 0) {
effectiveQuality = '100%';
if (tot4 === 0) {
effectiveQuality = '25%';
if (totale === 0) {
// ci sono solo pagine allo 0%
effectiveQuality = '100%';
}
}
}
}
}
drawStatistics(countVolumes, tot0, totToCreate, tot1, tot2, tot3, tot4, perc1, perc2, perc3, perc4);
if (countVolumes) {
$('.volumi a').not('.selflink').each(function() {
link = $(this).attr('href');
$.ajax({
url: link
}).done(function(response) {
content = $('.pagineDellEdizione', response);
tot0 = parseInt($('#index-pages-stat .quality0').html()) + content.find('.prp-pagequality-0').length;
totToCreate = parseInt($('#index-pages-stat .new').html()) + content.find('a.new').length;
tot1 = parseInt($('#index-pages-stat .quality1').html()) + content.find('.prp-pagequality-1').length + content.find('a.new').length;
tot2 = parseInt($('#index-pages-stat .quality2').html()) + content.find('.prp-pagequality-2').length;
tot3 = parseInt($('#index-pages-stat .quality3').html()) + content.find('.prp-pagequality-3').length;
tot4 = parseInt($('#index-pages-stat .quality4').html()) + content.find('.prp-pagequality-4').length;
totale = tot1 + tot2 + tot3 + tot4;
percToCreate = Math.round(totToCreate / totale * 100) || 0;
perc1 = Math.round(tot1 / totale * 100) || 0;
perc2 = Math.round(tot2 / totale * 100) || 0;
perc3 = Math.round(tot3 / totale * 100) || 0;
perc4 = Math.round(tot4 / totale * 100) || 0;
drawStatistics(countVolumes, tot0, totToCreate, tot1, tot2, tot3, tot4, perc1, perc2, perc3, perc4);
});
});
}
if (!countVolumes) {
if (declaredQuality !== undefined && declaredQuality != effectiveQuality) {
$('.quality-msg-text').html('<span class="index-pages-stat-avviso">Attenzione: l\'indice è al '
+ declaredQuality + ', ma andrebbe portato al ' + effectiveQuality + '</span> '
+ '(<a id="highlightLink" class="' + effectiveQuality.replace('%', '') + '" href="#">vedi le pagine al ' + effectiveQuality + '</a>)');
$('#highlightLink').click(function(e) {
e.preventDefault();
c = $(this).attr('class');
$('#index-pages-stat a.' + c).click();
});
}
// controlla pagine al 75% o 100% non trascluse
mw.loader.using("mediawiki.api", function() {
var api = new mw.Api();
$('.quality-msg-text').append(' <span id="notTranscludedWarning"></span>');
var count = 0;
$('.prp-index-pagelist .prp-pagequality-3, .prp-index-pagelist .prp-pagequality-4').each(function() {
var thisPageLink = $(this);
var pageTitle = thisPageLink.attr('title');
//console.log('check ' + pageName);
api.get({
action: 'query',
format: 'json',
list: 'embeddedin',
einamespace: '0',
eititle: pageTitle
}).done(function (data) {
var linkedNs0 = data.query.embeddedin;
if (linkedNs0.length == 0) {
count++;
$(thisPageLink).addClass('notTranscluded');
$('#notTranscludedWarning').html('Ci sono ' + count + ' pagine trascritte o rilette, ma non trascluse (<a id="showNotTranscluded" href="#">vedi</a> - <a href="/wiki/Aiuto:Transclusione_proofread">guida</a>)');
$('#showNotTranscluded').click(function(e) {
e.preventDefault();
highlight('notTranscluded');
});
if (count >= 10) {
$('#notTranscludedWarning').css('color', 'red');
}
//console.log('found ' + pageName);
}
$('#index-pages-stat .notTranscluded').html(count);
});
});
});
}
}
function getMilestones() {
api.get({
action: 'query',
prop: 'revisions',
titles: pagename,
rvlimit: 500,
format: 'json'
}).done(function (data) {
var created, sal75, sal100;
var sal = $('#pagequality').attr('class');
$.each(data.query.pages, function(index, obj) {
revs = obj.revisions;
for (var j = 0; j < revs.length; j++) {
var comment = revs[j].commenthidden ? revs[j].commenthidden : revs[j].comment;
var timestamp = revs[j].timestamp.substring(0, 10);
var dataFormattata = timestamp.substring(8, 10) + '/' + timestamp.substring(5, 7) + '/' + timestamp.substring(0, 4);
if (revs[j].parentid == 0) {
created = dataFormattata;
}
if (!sal75 && (sal == '75%' || sal == '100%') && comment.indexOf("Porto il SAL a SAL 75%") != -1) {
sal75 = dataFormattata;
} else if (!sal100 && sal == '100%' && comment.indexOf("Porto il SAL a SAL 100%") != -1) {
sal100 = dataFormattata;
}
}
});
$('#index-pages-stat').after('<div id="index-pages-stat-footer"></div>');
$('#index-pages-stat-footer').append('Indice creato il ' + created);
if (sal75) {
$('#index-pages-stat-footer').append('<br>Finito di trascrivere il ' + sal75);
}
if (sal100) {
$('#index-pages-stat-footer').append('<br>Finito di rileggere il ' + sal100);
}
});
}
function drawStatistics(countVolumes, tot0, totToCreate, tot1, tot2, tot3, tot4, perc1, perc2, perc3, perc4) {
if ($('#index-pages-stat').length == 0) {
$('.pagineDellEdizione').append($('<div id="index-pages-stat">'));
$('#index-pages-stat').append($('<div style="float: right"><button id="openStatsBtn" class="btn blue">Dettaglio contributi</button></div></div>'));
}
$('#index-pages-stat table, #index-pages-stat-tools, #index-pages-stat-volumes').remove();
$('#index-pages-stat').append($('<table></table>')
.append($('<tr></tr>')
.append('<td><a class="25" href="#" title="Pagine al 25% o non ancora create">Da trascrivere:</a></td>')
.append('<td><span class="quality1">' + tot1 + '</span></td>')
.append('<td class="perc1">' + perc1 + '% </td>')
)
.append($('<tr></tr>')
.append('<td> di cui <a class="0" href="#" title="Pagine non ancora create">da creare:</a></td>')
.append('<td><span class="new">' + totToCreate + '</span></td>')
.append('<td class="percToCreate">' + percToCreate + '% </td>')
)
.append($('<tr></tr>')
.append('<td><a class="50" href="#" title="Pagine al 50%">Da controllare:</a></td>')
.append('<td><span class="quality2">' + tot2 + '</span></td>')
.append('<td class="perc2">' + perc2 + '% </td>')
)
.append($('<tr></tr>')
.append('<td><a class="75" href="#" title="Pagine al 75%">Da rileggere:</a></td>')
.append('<td><span class="quality3">' + tot3 + '</span></td>')
.append('<td class="perc3">' + perc3 + '% </td>')
)
.append($('<tr></tr>')
.append('<td><a class="100" href="#" title="Pagine al 100%">Rilette:</a></td>')
.append('<td><span class="quality4">' + tot4 + '</span></td>')
.append('<td class="perc4">' + perc4 + '% </td>')
)
.append($('<tr></tr>')
.append('<td><a href="#" title="Pagine allo 0%">Vuote:</a></td>')
.append('<td><span class="quality0">' + tot0 + '</span></td>')
.append('<td>-</td>')
)
.append($('<tr></tr>')
.append('<td>Totale:</td>')
.append('<td><span class="total">' + (totale + tot0) + '</span></td>')
.append('<td>-</td>')
)
.append($('<tr></tr>')
.append('<td><a href="#" title="Pagine al 75% o 100% non trascluse">Non trascluse:</a></td>')
.append('<td><span class="notTranscluded">n.d.</span></td>')
.append('<td>-</td>')
)
);
$('#index-pages-stat').append($('<div id="index-pages-stat-tools"></div>')
.append('<input type="checkbox" id="mark-visited"/> <label for="mark-visited">Segna in grigio le pagine già visitate</label>'));
$('#mark-visited').click(function () {
if ($('.prp-index-pagelist').hasClass('mark-visited')) {
$('.prp-index-pagelist').removeClass('mark-visited');
} else {
$('.prp-index-pagelist').addClass('mark-visited');
}
});
if ($('.volumi a').not('.selflink').not('.new').length) {
$('#index-pages-stat').append($('<div id="index-pages-stat-volumes"></div>')
.append('<input type="checkbox" id="count-all-volumes"/> <label for="count-all-volumes">Tutti i volumi</label>')
);
if (countVolumes) {
$('#count-all-volumes').prop( "checked", true );
$('#count-all-volumes').click(function () {
calculateStatics(false);
});
} else {
$('#count-all-volumes').click(function () {
calculateStatics(true);
});
}
}
if ($('#index-pages-stat-footer').length == 0) {
getMilestones();
}
$('#index-pages-stat a').click(function(e) {
e.preventDefault();
claxx = $(this).parent().parent().find('span').attr('class');
highlight(claxx);
});
}
// barra di avanzamento nelle categorie indice
if (pagename.startsWith('Categoria:Pagine_indice_SAL_') || pagename == 'Categoria:Sommari'
|| pagename == 'Categoria:Indici_non_trasclusi_in_ns0' || pagename == 'Categoria:Indici_senza_sommario') {
var specialPageUrl = "/w/index.php?&title=Speciale:PagineIndice&limit=5000&offset=0";
if (pagename == 'Categoria:Pagine_indice_SAL_100%') {
specialPageUrl = "/w/index.php?&title=Speciale:PagineIndice&filter=validated&limit=5000&offset=0";
} else if (pagename == 'Categoria:Pagine_indice_SAL_75%') {
specialPageUrl = "/w/index.php?&title=Speciale:PagineIndice&filter=proofread&limit=5000&offset=0";
} else if (pagename == 'Categoria:Pagine_indice_SAL_25%' || pagename == 'Categoria:Pagine_indice_SAL_50%') {
specialPageUrl = "/w/index.php?&title=Speciale:PagineIndice&filter=incomplete&limit=5000&offset=0";
}
$.ajax({
url: specialPageUrl
}).done(function(response) {
console.log("Speciale:PagineIndice caricato");
content = $('.mw-spcontent ol.special', response);
content.children().each(function(index) {
titolo = $(this).find('a').attr('title');
// console.log(titolo);
quality = $(this).find('.pr_quality');
quality.addClass('quality-bar');
quality.find('td').filter(function() {
return $(this).css('width') == '0px';
}).remove();
$('.mw-category a').filter(function() {
return $(this).attr('title') == titolo;
}).parent().append(quality);
});
});
}
// icona SAL dell'indice in tutte le categorie
if (mw.config.get("wgCanonicalNamespace") == 'Category') {
var i25 = 0, i50 = 0, i75 = 0, i100 = 0;
$('#mw-pages > p').append('<span id="count-indici"></span>');
$('#mw-pages a').each(function(i) {
var title = $(this).attr('href').replace('/wiki/', '');
if (title.startsWith('Indice')) {
$.ajax({
url: "/w/index.php?&title=" + title
}).done(function(response) {
icon = $('.quality-msg-image img', response);
icon.attr('width', '9');
icon.attr('height', '9');
icon.css('margin-left', '3px');
$('#mw-pages [href="/wiki/' + title + '"]').after(icon);
qual = icon.attr('alt').replace('%.svg', '');
if (qual == '25') i25++;
else if (qual == '50') i50++;
else if (qual == '75') i75++;
else if (qual == '100') i100++;
if (pagename.indexOf('Categoria:Pagine_indice_SAL_') == -1)
$('#count-indici').html( ' SAL indici: <span class="quality1">' + i25
+ '</span> <span class="quality2">' + i50
+ '</span> <span class="quality3">' + i75
+ '</span> <span class="quality4">' + i100);
});
}
});
}
if (pagename.startsWith('Wikisource:Rilettura_del_mese/')) {
$('#mw-content-text li a').each(function(i) {
var title = $(this).attr('href').replace('/wiki/', '');
if (title.startsWith('Indice')) {
$.ajax({
url: "/w/index.php?&title=" + title
}).done(function(response) {
icon = $('.quality-msg-image img', response);
icon.attr('width', '9');
icon.attr('height', '9');
icon.css('margin-left', '3px');
$('#mw-content-text li [href="/wiki/' + title + '"]').after(icon);
});
}
});
}
sortByTitle = function(parent) {
var elems = parent.find('li').detach().sort(function (a, b) {
return ($(a).text() < $(b).text() ? -1 : $(a).text() > $(b).text() ? 1 : 0);
});
parent.append(elems);
};
// carica la lista dei testi brevi (fino a 30 pagine) e i "mozziconi"
if (pagename == 'Discussioni_Wikisource:Rilettura_del_mese') {
$.ajax({
url: "/w/api.php?action=query&list=categorymembers&cmtitle=Category:Pagine_indice_SAL_75%&cmlimit=500&format=json"
}).done(function(response) {
var list = response.query.categorymembers;
$('#testiBrevi, #mozziconi').html('<ol></ol>');
$('#testiBrevi').append('<b>Totale pagine da rileggere: <span id="testiBreviTotale">0</span></b>');
$('#mozziconi').append('<b>Totale pagine da rileggere: <span id="mozziconiTotale">0</span></b>');
for (i = 0; i < list.length; i++) {
var title = list[i].title;
$.ajax({
url: "/w/index.php?&title=" + title
}).done(function(response) {
totToCreate = $('.pagineDellEdizione a.new', response).length;
tot1 = $('.pagineDellEdizione .prp-pagequality-1', response).length + totToCreate;
tot2 = $('.pagineDellEdizione .prp-pagequality-2', response).length;
tot3 = $('.pagineDellEdizione .prp-pagequality-3', response).length;
tot4 = $('.pagineDellEdizione .prp-pagequality-4', response).length;
totale = tot1 + tot2 + tot3 + tot4;
perc3 = Math.round(tot3 / totale * 100) || 0;
var title = $('#firstHeading', response).text();
//console.log(title + ': ' + tot3);
if (tot3 <= 30) {
link = $('<li><a href="/wiki/' + title + '"><i>' + title + '</i></a> (' + tot3 + ')</li>');
if (tot3 == 0) {
link.css('color', 'red');
link.find('a').css('color', 'red');
}
$('#testiBrevi ol').append(link);
$('#testiBreviTotale').html(tot3 + parseInt($('#testiBreviTotale').html()));
sortByTitle($('#testiBrevi ol'));
}
else if (perc3 < 50) {
link = $('<li><a href="/wiki/' + title + '"><i>' + title + '</i></a> (' + tot3 + ', ' + perc3 + '%)</li>');
$('#mozziconi ol').append(link);
$('#mozziconiTotale').html(tot3 + parseInt($('#mozziconiTotale').html()));
sortByTitle($('#mozziconi ol'));
}
icon = $('.quality-msg-image img', response);
icon.attr('width', '9');
icon.attr('height', '9');
icon.css('margin-left', '3px');
$('#proposte [title="' + title.replace(/"/g, '\\"') + '"]').parent().after(icon);
icon.after(' (' + tot3 + ')');
});
}
});
}
addToMap = function(map, name) {
if (!map.hasOwnProperty(name)) {
map[name] = 1;
} else {
map[name] = map[name] + 1;
}
};
toArray = function(map) {
var arr = [];
for (var o in map) {
arr.push( { name: o, count: map[o] } );
}
return arr;
};
sortDesc = function(arr, field, ascDesc) {
if (field === undefined)
field = 'count';
if (ascDesc === undefined)
ascDesc = 'asc';
arr.sort(function(a, b) {
return a[field] > b[field] ? (ascDesc == 'asc' ? -1 : 1) : a[field] < b[field] ? (ascDesc == 'asc' ? 1 : -1) : 0;
});
return arr;
};
userLink = function(name) {
return '<a href="/wiki/Speciale:Contributi/' + name + '" target="_new">' + name + '</a>';
};
loadPagesContribs = function() {
countByUser = {};
countByMonth = {};
countByUserAndMonth = [];
countLast10Days = {};
countLast30Days = {};
totalRevs = 0;
var lastPage = $('.prp-index-pagelist a:last').attr('href').replace('/wiki/', '').replace('/w/index.php?title=', '').replace('&action=edit&redlink=1', '');
var baseTitle = 'Pagina:' + mw.config.get('wgTitle') + '/';
var lastPageNumber = parseInt(lastPage.split('/')[1]);
var pagesToGo = $(".prp-index-pagelist a:not(.new)").length;
if (pagesToGo == 0) {
alert("Dettaglio non disponibile, nessuna pagina è stata ancora creata!");
} else {
for (var i = 1; i <= lastPageNumber; i++) {
var thisPage = baseTitle + i;
if ($('.prp-index-pagelist a[title="' + thisPage + '"]').length) {
api.post({
action: 'query',
format: 'json',
titles: thisPage,
prop: 'revisions',
rvprop: 'user|timestamp',
rvlimit: 100
}).done(function (data, textStatus, jqXHR) {
$.each(data.query.pages, function(index, obj) {
revs = obj.revisions;
for (var j = 0; j < revs.length; j++) {
var user = revs[j].user;
var timestamp = revs[j].timestamp;
if (!user.toLowerCase().endsWith('bot')) {
var month = timestamp.substring(0, 7);
addToMap(countByUser, user);
addToMap(countByMonth, month);
var date10DaysAgo = new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).setHours(0,0,0,0);
var date30DaysAgo = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).setHours(0,0,0,0);
if (Date.parse(timestamp) > date10DaysAgo)
addToMap(countLast10Days, user);
else if (Date.parse(timestamp) > date30DaysAgo)
addToMap(countLast30Days, user);
var found = false;
for (var k = 0; k < countByUserAndMonth.length; k++) {
if (countByUserAndMonth[k].user == user && countByUserAndMonth[k].month == month) {
countByUserAndMonth[k].count = countByUserAndMonth[k].count + 1;
found = true;
break;
}
}
if (!found) {
countByUserAndMonth.push( { user: user, month: month, count: 1 } );
}
totalRevs++;
}
}
pagesToGo--;
if (pagesToGo == 0) {
openStatsBox();
}
});
});
}
}
}
};
openStatsBox = function() {
$('.index-stats-box').remove();
var box = '<div class="box index-stats-box">'
+ '<div class="box-title">Dettaglio contributi<span class="icon-close"></span></div>'
+ '<div class="box-main"><div class="index-stats-box-main"></div><div class="index-stats-box-note"></div></div>';
$("body").append(box);
$('.index-stats-box-main').append('<div class=""');
$('.index-stats-box').draggable();
$('.index-stats-box').draggable('option', 'cancel', '.box-main');
$('.index-stats-box .icon-close').click(function() {
$('.index-stats-box').remove();
});
var topUsers = sortDesc(toArray(countByUser)).slice(0, 5);
$('.index-stats-box-main').append('<table id="topUsers"></table');
$('#topUsers').append('<tr><th colspan="4">Maggiori contributori¹</th></tr>');
$('#topUsers').append('<tr><th>Utente</th><th>Modifiche</th><th>%</th><th>Mesi di maggiore attività²</th></tr>');
for (var i = 0; i < topUsers.length; i++) {
var perc = (topUsers[i].count / totalRevs * 100).toFixed(0);
if (perc > 5 || topUsers[i].count >= 10) {
$('#topUsers').append('<tr></tr>');
$('#topUsers tr:last').append('<td>' + userLink(topUsers[i].name) + '</td>');
$('#topUsers tr:last').append('<td>' + topUsers[i].count + '</td>');
$('#topUsers tr:last').append('<td>' + perc + '%</td>');
var topPeriods = countByUserAndMonth.filter(function (el) {
return el.user == topUsers[i].name;
});
topPeriods = sortDesc(topPeriods).slice(0, 3);
topPeriodsStr = [];
for (var j = 0; j < topPeriods.length; j++) {
if (j == 0 || topPeriods[j].count >= 10) {
topPeriodsStr.push(topPeriods[j].month + ' (' + topPeriods[j].count + ')');
}
}
$('#topUsers tr:last').append('<td>' + topPeriodsStr.join(', ') + '</td>');
}
}
var topMonth = sortDesc(toArray(countByMonth)).slice(0, 5);
topMonth = sortDesc(topMonth, 'name', 'desc');
$('.index-stats-box-main').append('<table id="topMonths"></table');
$('#topMonths').append('<tr><th colspan="4">Mesi di maggiore attività¹</th></tr>');
$('#topMonths').append('<tr><th>Mese</th><th>Modifiche</th><th>%</th><th>Utenti più attivi²</th></tr>');
for (var k = 0; k < topMonth.length; k++) {
var perc2 = (topMonth[k].count / totalRevs * 100).toFixed(0);
if (perc2 > 5 || topMonth[k].count >= 10) {
$('#topMonths').append('<tr></tr>');
$('#topMonths tr:last').append('<td>' + topMonth[k].name + '</td>');
$('#topMonths tr:last').append('<td>' + topMonth[k].count + '</td>');
$('#topMonths tr:last').append('<td>' + perc2 + '%</td>');
var monthUsers = countByUserAndMonth.filter(function (el) {
return el.month == topMonth[k].name;
});
monthUsers = sortDesc(monthUsers).slice(0, 3);
monthUsersStr = [];
for (var l = 0; l < monthUsers.length; l++) {
if (l == 0 || monthUsers[l].count >= 10) {
monthUsersStr.push(userLink(monthUsers[l].user) + ' (' + monthUsers[l].count + ')');
}
}
$('#topMonths tr:last').append('<td>' + monthUsersStr.join(', ') + '</td>');
}
}
$('.index-stats-box-note').append('<b>Note</b><br>' +
'Sono conteggiati i contributi in nsPagina degli utenti non bot.<ul>' +
'<li>1. I primi 5 con almeno 10 contributi o il cui peso è almeno 5% del totale.</li>' +
'<li>2. Dopo il primo, sono mostrati i successivi 2 con almeno 10 contributi.</li>' +
'</ul>');
topLast10Days = sortDesc(toArray(countLast10Days)).slice(0, 3);
topLast30Days = sortDesc(toArray(countLast30Days)).slice(0, 3);
if (topLast10Days.length || topLast30Days.length) {
$('.index-stats-box-main').append('<table id="recentActivity"></table');
$('#recentActivity').append('<tr><th colspan="2">Attività recente³</th></tr>');
$('.index-stats-box-note ul').append('<li>3. I 5 utenti con più contributi negli ultimi 10 o 30 giorni.</li>');
if (topLast10Days.length) {
topLast10DaysStr = [];
for (var m = 0; m < topLast10Days.length; m++) {
topLast10DaysStr.push(userLink(topLast10Days[m].name) + ' (' + topLast10Days[m].count + ')');
}
$('#recentActivity').append('<tr><td>Ultimi 10 giorni</td><td>' + topLast10DaysStr.join(', ') + '</td></tr>');
}
if (topLast30Days.length) {
topLast30DaysStr = [];
for (var n = 0; n < topLast30Days.length; n++) {
topLast30DaysStr.push(userLink(topLast30Days[n].name) + ' (' + topLast30Days[n].count + ')');
}
$('#recentActivity').append('<tr><td>Da 11 a 30 giorni fa</td><td>' + topLast30DaysStr.join(', ') + '</td></tr>');
}
}
};
$('#openStatsBtn').click(loadPagesContribs);
function getPageNum(el) {
return parseInt($(el).attr('title').replace(basePageName, '').replace(notExists, ''));
}
// evidenzia le pagine che rappresentano un capitolo al mouseover sul sommario
$('.indice-sommario-titolo a').mouseover(function() {
var table = $(this).parents('table');
var pageFrom = table.find('.indice-sommario-num a');
var pageTo = $(table.nextAll('table')[0]).find('.indice-sommario-num a');
if (pageFrom.length) {
var from = getPageNum(pageFrom[0]);
var to = pageTo.length ? getPageNum(pageTo[0])-1 : 10000;
highlightInterval(from, to);
var totPages = $('.highlight-page:not(.quality0)').length;
var todoPages = $('.highlight-page:not(.quality0,.quality3,.quality4)').length;
var title = (totPages > 1 ? totPages + ' pagine' : '1 pagina') + ' (' + todoPages + ' da trascrivere)';
$(this).attr('title', title);
}
});
$('.indice-sommario-num a').mouseover(function() {
var num = getPageNum(this);
highlightInterval(num, num);
});
});