Usuario:Ciencia Al Poder/calculolistaestadisticasbase.js
De WikiDex
Ir a la navegaciónIr a la búsqueda
Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.
- Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
- Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
- Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
- Opera: Presiona Ctrl+F5.
/*
* Cálculo de las columnas media, desviación típica y suma en [[Lista de Pokémon según sus características base]]
* */
(function() {
var _init = function() {
if (mw.config.get('wgTitle') != 'Lista de Pokémon con sus características base') {
alert('Solo debe usarse en el artículo [[Lista de Pokémon con sus características base]]');
return;
}
if (mw.config.get('wgAction') != 'edit' && mw.config.get('wgAction') != 'submit') {
alert('Solo puede usarse cuando se esté editando el artículo');
return;
}
_recalcularLista();
},
_recalcularLista = function() {
var txt, antes, despues, idx, cont, filas, reCheckNumIni, columnas, i, j, datos, suma, media, desv1, desviacion, reRowspan, mRowspan, rowspan, extracolnum, cellVal;
txt = $('#wpTextbox1').val();
idx = txt.indexOf('{|');
if (idx == -1) {
alert('No se encontró {|');
return;
}
antes = txt.substr(0, idx + 2);
cont = txt.substr(idx + 2);
idx = cont.indexOf('|}');
if (idx == -1) {
alert('No se encontró |}');
return;
}
despues = cont.substr(idx);
cont = cont.substr(0, idx).replace('\r');
filas = cont.split('|-');
reCheckNumIni = /\s*\!(\s*rowspan="\d"\s*\|)?\s*\d+ *\n/;
// Hay rowspan en la primera columna
reRowspan = /rowspan="(\d)"/;
rowspan = 1;
extracolnum = 0;
for (i = 0; i < filas.length; i++) {
if (rowspan == 1 && !reCheckNumIni.test(filas[i])) {
if (rowspan == 1 && i > 5) {
console.log(filas[i]);
console.log('Fila mayor que 5 sin datos!');
return;
}
// Será un encabezado
continue;
}
columnas = filas[i].split('\n');
datos = [];
if (rowspan == 1) {
mRowspan = reRowspan.exec(columnas[1]);
if (mRowspan) {
rowspan = parseInt(mRowspan[1], 10);
}
extracolnum = 0;
} else {
extracolnum = -1;
rowspan--;
}
for (j = 4; j < 4 + 6; j++) {
// Eliminar el |
cellVal = columnas[extracolnum + j].substr(1);
if (cellVal.indexOf('<') != -1) {
cellVal = cellVal.substr(0, cellVal.indexOf('<'));
}
cellVal = $.trim(cellVal);
datos[j - 4] = parseFloat(cellVal);
}
suma = 0;
for (j = 0; j < datos.length; j++) {
suma += datos[j];
}
media = suma / 6;
desv1 = 0;
for (j = 0; j < datos.length; j++) {
desv1 += Math.pow(datos[j] - media, 2);
}
desviacion = Math.sqrt(desv1 / 5);
columnas[extracolnum + 10] = '| ' + _formatDecimal(Math.round(media * 100) / 100, 2);
columnas[extracolnum + 11] = '| ' + _formatDecimal(Math.round(desviacion * 100) / 100, 2);
columnas[extracolnum + 12] = '| ' + suma;
columnas[extracolnum + 13] = '';
filas[i] = columnas.join('\n');
}
$('#wpTextbox1').val(antes + filas.join('|-') + despues);
},
_formatDecimal = function(d, nd) {
var str, idx, cur;
str = new String(d);
str = str.replace('.', ',');
idx = str.indexOf(',');
if (idx == -1) {
cur = 0;
str = str + ',';
} else {
cur = str.length - idx - 1;
}
while (cur < nd) {
str += '0';
cur++;
}
return str;
};
$(_init);
})();