Utilisateur:The RedBurn/HistoryNumDiff.js

Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//<source lang="javascript" line>
/*
 * Historique amélioré
 *
 * Indique le nombre de caractères ajoutés/supprimés à la place de la taille de la version,
 * comme pour la Liste de suivi ou les Modifications récentes.
 *
 * Auteur : The RedBurn
 *
 * Date de dernière révision : 21 mai 2007
 */

function getNumFromString (i,eltsByTag) {
  var regString = /\(([0-9,&nbsp;]*) bytes/;
  var resultString;
  var string = eltsByTag.item(i).innerHTML;
  var separator = /,/g;
  var empty = "(empty)";
  
  if(mw.config.get('wgUserLanguage') == "fr")
  {
    regString = /\(([0-9&nbsp;]*) octets/;
    separator = /&nbsp;/g;
    empty = "(vide)";
  }
  
  if(string==empty)
    string=0;
  else {
    resultString= regString.exec(string);
    string = resultString[1].replace(separator,"");
    string = parseInt(string );
  }
  return string;
}

function makeNumDiff() {
  var string;
  var resultPrevString = 0; // précédent dans l'ordre chronologique
  var resultNextString = 0;
  var className;
  var lastI = 0;
  var i = 0;
  var eltsByTag = document.getElementsByTagName("span");
  var length = eltsByTag.length;
  
  while(i<length && eltsByTag.item(i).className != "history-size")
    i++;
    
  if(i<length) {
    resultNextString = getNumFromString(i,eltsByTag);
    lastI = i;
    i++;
  
    while (i<length) {
      if (eltsByTag.item(i).className == "history-size"){
    
        resultPrevString = getNumFromString(i,eltsByTag);
          
        string = resultNextString - resultPrevString;
        
        if (string>0) {
          className = "mw-plusminus-pos";
          string = "+" + string;
        }
        else
          if (string<0)
            className = "mw-plusminus-neg";
          else
            className = "mw-plusminus-null";
            
        if (string<-500)
          string = "<strong>" + "(" + string + ")" + "</strong>";
        else
          string = "(" + string + ")";
        
        eltsByTag.item(lastI).innerHTML = string ;
        eltsByTag.item(lastI).className = className;
        
        resultNextString = resultPrevString;
        lastI = i;
      }
      i++;
    }
  }
}
if(mw.config.get('wgAction') && mw.config.get('wgAction') == "history")
  addOnloadHook(makeNumDiff);
//</source>