MediaWiki:Common.js: differenze tra le versioni

Pagina dell'interfaccia di MediaWiki
Nessun oggetto della modifica
Nessun oggetto della modifica
 
Riga 20: Riga 20:
});
});


 
/*FILTRO LISA NPC*/
(function($) {
(function($) {
   // Debug
   // debug rapido
   console.log("🔍 filtro NPC attivato – righe trovate:", $('#characterTable tr:has(td)').length);
   console.log("🔍 filtro NPC attivato – righe trovate:", $('#characterTable tr:has(td)').length);
 
   if ($('#characterTable tr:has(td)').length === 0) {
  // 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");
     console.warn("❗ characterTable tr:has(td) restituisce 0: controlla id/tabella");
     return;
     return;
   }
   }


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


  // 2) Popola le select
   function popola(items, selId) {
   function popola(items, selId) {
     var $sel = $('#'+selId);
     var $sel = $('#'+selId);
     Object.keys(items).sort().forEach(function(v){
     Object.keys(items).sort().forEach(function(v){
       $sel.append( $('<option>').val(v).text(v) );
       $sel.append($('<option>').val(v).text(v));
     });
     });
   }
   }
   popola(razze,    'filter-razza');
   popola(razze,    'filter-razza');
   popola(luoghi,  'filter-luogo');
   popola(luoghi,  'filter-luogo');
Riga 60: Riga 55:
   popola(statuses, 'filter-status');
   popola(statuses, 'filter-status');


   // 2) Applica i filtri
   // 3) Filtro al change
   $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
   $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
  .on('change', function(){
    .on('change', function(){
    var fR = $('#filter-razza').val(),
      var fR = $('#filter-razza').val(),
        fL = $('#filter-luogo').val(),
          fL = $('#filter-luogo').val(),
        fS = $('#filter-sessione').val(),
          fS = $('#filter-sessione').val(),
        fSt = $('#filter-status').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);
      });
    });


    $('#characterTable tr:has(td)').each(function(){
  // 4) Reset button
      var $c    = $(this).children('td'),
  $('#filter-reset').on('click', function(){
          r     = $.trim($c.eq(1).text()),
    var btn = $(this);
          l     = $.trim($c.eq(3).text()),
    btn.addClass('rotating');
          se    = $.trim($c.eq(6).text()),
     // svuota tutte le select e riapplica il filtro
          file  = ($c.eq(7).find('img').attr('src')||'').split('/').pop(),
     $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
          match = (!fR  || r===fR)
      .val('').trigger('change');
                && (!fL  || l===fL)
    // togli classe dopo l'animazione
                && (!fS  || se===fS)
    setTimeout(function(){ btn.removeClass('rotating'); }, 500);
                && (!fSt || file===fSt);
  });


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

Versione attuale delle 09:03, 30 lug 2025

/* 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);
    }
  });
});

/*FILTRO LISA NPC*/
(function($) {
  // debug rapido
  console.log("🔍 filtro NPC attivato – righe trovate:", $('#characterTable tr:has(td)').length);
  if ($('#characterTable tr:has(td)').length === 0) {
    console.warn("❗ characterTable tr:has(td) restituisce 0: controlla id/tabella");
    return;
  }

  // 1) Raccogli i valori unici
  var razze = {}, luoghi = {}, sessioni = {}, statuses = {};
  $('#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();
    if(r)  razze[r]        = true;
    if(l)  luoghi[l]       = true;
    if(se) sessioni[se]    = true;
    if(file) statuses[file]= true;
  });

  // 2) Popola le select
  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');

  // 3) Filtro al change
  $('#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);
      });
    });

  // 4) Reset button
  $('#filter-reset').on('click', function(){
    var btn = $(this);
    btn.addClass('rotating');
    // svuota tutte le select e riapplica il filtro
    $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
      .val('').trigger('change');
    // togli classe dopo l'animazione
    setTimeout(function(){ btn.removeClass('rotating'); }, 500);
  });

})(jQuery);