MediaWiki:Common.js

Pagina dell'interfaccia di MediaWiki

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)
  • Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5.
/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */

/*CAPITALIZE SEARCH*/
document.addEventListener("DOMContentLoaded", function () {
  const input = document.querySelector("#searchInput");

  input.addEventListener("input", function () {
    const words = input.value.split(" ").map(word => {
      return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
    });
    const capitalized = words.join(" ");
    
    // Only update value if it's changed to avoid cursor jump
    if (input.value !== capitalized) {
      const cursorPos = input.selectionStart;
      input.value = capitalized;
      input.setSelectionRange(cursorPos, cursorPos);
    }
  });
});


(function($) {
  // Debug
  console.log("🔍 filtro NPC attivato – righe trovate:", $('#characterTable tr:has(td)').length);

  // Se non ho trovati nemmeno 1 riga, vuol dire che o l'id della tabella è sbagliato
  if ( $('#characterTable tr:has(td)').length === 0 ) {
    console.warn("❗ characterTable tr:has(td) restituisce 0: controlla id/tabella");
    return;
  }

  var razze = {}, luoghi = {}, sessioni = {}, statuses = {};

  // 1) Raccogli i valori unici
  $('#characterTable tr:has(td)').each(function(){
    var $c   = $(this).children('td'),
        r    = $.trim($c.eq(1).text()),
        l    = $.trim($c.eq(3).text()),
        se   = $.trim($c.eq(6).text()),
        src  = $c.eq(7).find('img').attr('src') || '',
        file = src.split('/').pop();

    if (r)  razze[r]       = true;
    if (l)  luoghi[l]      = true;
    if (se) sessioni[se]   = true;
    if (file) statuses[file] = true;
  });

  function popola(items, selId) {
    var $sel = $('#'+selId);
    Object.keys(items).sort().forEach(function(v){
      $sel.append( $('<option>').val(v).text(v) );
    });
  }

  popola(razze,    'filter-razza');
  popola(luoghi,   'filter-luogo');
  popola(sessioni, 'filter-sessione');
  popola(statuses, 'filter-status');

  // 2) Applica i filtri
  $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
  .on('change', function(){
    var fR  = $('#filter-razza').val(),
        fL  = $('#filter-luogo').val(),
        fS  = $('#filter-sessione').val(),
        fSt = $('#filter-status').val();

    $('#characterTable tr:has(td)').each(function(){
      var $c    = $(this).children('td'),
          r     = $.trim($c.eq(1).text()),
          l     = $.trim($c.eq(3).text()),
          se    = $.trim($c.eq(6).text()),
          file  = ($c.eq(7).find('img').attr('src')||'').split('/').pop(),
          match = (!fR  || r===fR)
                && (!fL  || l===fL)
                && (!fS  || se===fS)
                && (!fSt || file===fSt);

      $(this).toggle(match);
    });
  });
})(jQuery);