MediaWiki:Common.js: differenze tra le versioni

Pagina dell'interfaccia di MediaWiki
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 20: Riga 20:
});
});


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


console.log("🚀 filter script: Common.js caricato");
  // 1) Raccogli i valori unici
 
  var razze = {}, luoghi = {}, sessioni = {}, statuses = {};
mw.loader.using(['mediawiki.util','jquery'], function($) {
  $('#characterTable tr:has(td)').each(function(){
  console.log("✅ filter script: jQuery pronto, righe trovate:",  
    var $c = $(this).children('td'),
              $('#characterTable tr:has(td)').length);
        r  = $.trim($c.eq(1).text()),
   // … qui tutto il resto del tuo script …
        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;
   });


/*FILTRO PER LISA*/
  // 2) Popola le select
mw.loader.using('jquery', function($){
   function popola(items, selId) {
   $(function(){
     var $sel = $('#'+selId);
     var razze = {}, luoghi = {}, sessioni = {}, statuses = {};
    Object.keys(items).sort().forEach(function(v){
 
       $sel.append($('<option>').val(v).text(v));
    // 1) Scorri tutte le righe che hanno <td>
    $('#characterTable tr:has(td)').each(function(){
      var $c = $(this).children('td');
      var r  = $.trim($c.eq(1).text());
      var l  = $.trim($c.eq(3).text());
       var se = $.trim($c.eq(6).text());
      var src = $c.eq(7).find('img').attr('src') || '';
      var file = src.split('/').pop();  // solo il nome del file
 
      if (r)  razze[r] = true;
      if (l)  luoghi[l] = true;
      if (se) sessioni[se] = true;
      if (file) statuses[file] = true;
     });
     });
  }
  popola(razze,    'filter-razza');
  popola(luoghi,  'filter-luogo');
  popola(sessioni, 'filter-sessione');
  popola(statuses, 'filter-status');


    // 2) Funzione di aiuto per popolare le <select>
  // 3) Filtro al change
     function popola(items, sel) {
  $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
       var $sel = $('#'+sel);
     .on('change', function(){
       $.each(Object.keys(items).sort(), function(i,v){
       var fR = $('#filter-razza').val(),
        $sel.append( $('<option>').val(v).text(v) );
          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);
       });
       });
     }
     });
    popola(razze,    'filter-razza');
    popola(luoghi,  'filter-luogo');
    popola(sessioni, 'filter-sessione');
    popola(statuses, 'filter-status');


     // 3) Applica i filtri al cambio di valore
  // 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')
     $('#filter-razza, #filter-luogo, #filter-sessione, #filter-status')
    .change(function(){
       .val('').trigger('change');
       var fR  = $('#filter-razza').val(),
    // togli classe dopo l'animazione
          fL  = $('#filter-luogo').val(),
    setTimeout(function(){ btn.removeClass('rotating'); }, 500);
          fS  = $('#filter-sessione').val(),
   });
          fSt = $('#filter-status').val();
 
      $('#characterTable tr:has(td)').each(function(){
        var $c  = $(this).children('td');
        var 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();


        var ok = (!fR  || r===fR)
})(jQuery);
              && (!fL  || l===fL)
              && (!fS  || se===fS)
              && (!fSt || file===fSt);
 
        $(this).toggle(ok);
      });
    });
  });
});

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);