Dear visitors, IOP Wiki is currently the target of a denial of service campaign. We are investigating countermeasures. In the meantime, the Wiki may experience periods of unplanned downtime.

Widget:indexSorterGrouper: Difference between revisions

Welcome to IOP Wiki. This website is maintained by the Girls' Frontline community and is free to edit by anyone.
Jump to navigation Jump to search
m Fixed a sort order bug
m Missed some parts
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
<includeonly><script>
<includeonly><script>
RLQ.push(function () {
RLQ.push(['jquery', function () {
   $(document).ready(function() {
   $(document).ready(function() {
    // initially remove the paragraph
    var parents = $(".mw-headline").closest("h2");
    parents.each(function() {
      var parent = $(this);
      var paragraph = parent.next('p');
      paragraph.replaceWith(paragraph.children());
    });
   
     // For now, we have to make sure the data is there (Change the template, dammit!)
     // For now, we have to make sure the data is there (Change the template, dammit!)
$(".card-bg-small").each(function() {
$(".gfl-doll-card").each(function() {
  var element = $(this);
  var element = $(this);
  var name = element.find('span').first().text();
  var name = element.find('.name').first().text();
  var index = parseInt(element.find('span').last().text());
  var index = parseInt(element.find('.index').last().text());
  var srcStr = element.find("img").eq(2).attr("src");
  var srcStr = element.find("img.rarity-class").attr("src");
  var myRegexp = /^.*Icon_(.*)_(.*)star.*$/g;
  var myRegexp = /^.*Icon_(.*)_(.*)star.*$/g;
  var match = myRegexp.exec(srcStr);
  var match = myRegexp.exec(srcStr);
  var classification = match[1];
  var classification = match[1];
  var rarity = match[2];
  var rarity = match[2];
   
         
          var serverDataSpans = $("span.serverdata[data-server-doll='" + name + "']");
          serverDataSpans.each(function() {
            var serverDataSpan = $(this);
            var serverShort = serverDataSpan.attr('data-server-released');
            var serverDollName = serverDataSpan.attr('data-server-releasename');
            element.attr("data-server-" + serverShort, serverDollName);
          });
          serverDataSpans.remove();
 
  element.attr('data-server-WIKI', name);
  element.data('name', name);
  element.data('name', name);
  element.data('index', index);
  element.data('index', index);
Line 21: Line 39:
     // Once everything is ready, default-sort it
     // Once everything is ready, default-sort it
     $('[data-initialsort]').click();
     $('[data-initialsort]').click();
   
    // Activate ui for user
    $(".gf-button").prop('disabled', false);
    $('.removeAfterInitIsg').remove();
   });
   });
});
}]);


function orderByName(currentButton) {
function orderByName(currentButton) {
Line 44: Line 66:
       var nextElementLetter = getFirstLetterGroup($(elements[i+1]).data('name'));
       var nextElementLetter = getFirstLetterGroup($(elements[i+1]).data('name'));
       if (currentLetter !== nextElementLetter) {
       if (currentLetter !== nextElementLetter) {
        var linebreaker = $("<br />").addClass("addedbysorter");
        linebreaker.insertAfter(element);
         var groupHeaderText = nextElementLetter.toUpperCase() + "...";
         var groupHeaderText = nextElementLetter.toUpperCase() + "...";
         if (groupHeaderText.trim() != "...") {
         if (groupHeaderText.trim() != "...") {
           var groupHeader = $("<h3 />").text(groupHeaderText).addClass("addedbysorter");
           var groupHeader = $("<h3 />").text(groupHeaderText).addClass("addedbysorter");
           groupHeader.insertAfter(linebreaker);
           groupHeader.insertAfter(element);
         }
         }
       }
       }
Line 124: Line 144:
    
    
   if (currentKey !== nextElementKey) {
   if (currentKey !== nextElementKey) {
    var linebreaker = $("<br />").addClass("addedbysorter");
    linebreaker.insertAfter(element1);
   
     var groupHeaderText = $(nextElement).data('classification') + " " + getNumberForRarity(nextElement) + "-Star";
     var groupHeaderText = $(nextElement).data('classification') + " " + getNumberForRarity(nextElement) + "-Star";
     var groupHeader = $("<h3 />").text(groupHeaderText).addClass("addedbysorter");
     var groupHeader = $("<h3 />").text(groupHeaderText).addClass("addedbysorter");
     groupHeader.insertAfter(linebreaker);
     groupHeader.insertAfter(element1);
   }
   }
}
}
Line 149: Line 166:
function getNumberForRarity(element) {
function getNumberForRarity(element) {
   var rawRarity = $(element).data('rarity');
   var rawRarity = $(element).data('rarity');
   if (!rawRarity || rawRarity == null || isNaN(rawRarity)) {
 
   if (!rawRarity || rawRarity == null) {
    return 9;
  }
 
  if (("" + rawRarity).toLowerCase() === "extra") {
    return "Extra";
  }
 
  if (isNaN(rawRarity)) {
     return 9;
     return 9;
   }
   }
Line 193: Line 219:
     var firstIndex = elements.first().data('index');
     var firstIndex = elements.first().data('index');
     var firstTen = Math.ceil(parseInt(firstIndex) / 10) * 10;
     var firstTen = Math.ceil(parseInt(firstIndex) / 10) * 10;
    if (sortOrder == -1) { firstTen -= 9; }
     var groupHeader = $("<h3 />").text(getNumberText(firstIndex) + "..." + getNumberText(firstTen)).addClass("addedbysorter");
     var groupHeader = $("<h3 />").text(getNumberText(firstIndex) + "..." + getNumberText(firstTen)).addClass("addedbysorter");
     groupHeader.insertBefore(elements.first());
     groupHeader.insertBefore(elements.first());
Line 202: Line 229:
       var nextElement = $(elements[i+1]);
       var nextElement = $(elements[i+1]);
        
        
       createIndexGroup(element, nextElement);
       createIndexGroup(element, nextElement, sortOrder);
        
        
       return true;
       return true;
Line 218: Line 245:
}
}


function createIndexGroup(element, nextElement) {
function createIndexGroup(element, nextElement, sortOrder) {
   var currentTen = Math.ceil(parseInt($(element).data('index')) / 10) * 10;
   var currentTen = Math.ceil(parseInt($(element).data('index')) / 10) * 10;
   var nextElementTen = Math.ceil(parseInt(nextElement.data('index')) / 10) * 10;
   var nextElementTen = Math.ceil(parseInt(nextElement.data('index')) / 10) * 10;
   if (currentTen !== nextElementTen) {
   if (currentTen !== nextElementTen) {
    var linebreaker = $("<br />").addClass("addedbysorter");
    linebreaker.insertAfter(element);
   
    var groupHeaderText = getNumberText(currentTen) + "..." + getNumberText(nextElementTen);
     if (!isNaN(nextElementTen)) {
     if (!isNaN(nextElementTen)) {
      if (sortOrder == -1) {
        currentTen -= 10;
        nextElementTen -= 9;
      }
     
      var currentIdxShow = currentTen;
      if (sortOrder != -1 && currentIdxShow > 1) currentIdxShow += 1;
      var groupHeaderText = getNumberText(currentIdxShow) + "..." + getNumberText(nextElementTen);
     
       var groupHeader = $("<h3 />").text(groupHeaderText).addClass("addedbysorter");
       var groupHeader = $("<h3 />").text(groupHeaderText).addClass("addedbysorter");
       groupHeader.insertAfter(linebreaker);
       groupHeader.insertAfter(element);
     }
     }
   }
   }
Line 244: Line 276:
     return 1;
     return 1;
   }
   }
}
function switchServer(butt) {
  var activeServer = $(butt).attr('data-tdollserver');
 
  $('[data-tdollserverbutton="true"]').removeClass("enabled");
 
  $('.gfl-doll-card.unreleased').removeClass('unreleased');
  $('.gfl-doll-card').each(function() {
    var element = $(this);
    var nameToSet = "";
    if (element.is("[data-server-" + activeServer + "]")) {
      nameToSet = element.attr('data-server-' + activeServer);
    } else {
      element.addClass('unreleased');
      nameToSet = element.attr('data-server-wiki');
    }
    element.find('.name').first().text(nameToSet);
  });
 
  $(butt).addClass("enabled");
}
}


Line 252: Line 305:
   parents.each(function() {
   parents.each(function() {
     var parent = $(this);
     var parent = $(this);
     var elements = parent.nextUntil("h2", ".card-bg-small");
    // All elements inside the paragraph after the h2 which have special class
     var elements = parent.nextUntil("h2", ".gfl-doll-card");
    
    
     elements.detach().sort(comparer);
     elements.detach().sort(comparer);
Line 264: Line 318:
}
}
</script><div style="display:inline-block">
</script><div style="display:inline-block">
<button class="gf-button" data-tdollsortbutton="true" data-initialsort="true" onclick="orderByName(this);">By Name</button>
<button class="gf-button" data-tdollsortbutton="true" disabled data-initialsort="true" onclick="orderByClassRarityName(this);">By Class&gt;Rarity&gt;Name</button>
<button class="gf-button" data-tdollsortbutton="true" onclick="orderByClassRarityName(this);">By Class&gt;Rarity&gt;Name</button>
<button class="gf-button" data-tdollsortbutton="true" disabled onclick="orderByRarityClassName(this);">By Rarity&gt;Class&gt;Name</button>
<button class="gf-button" data-tdollsortbutton="true" onclick="orderByRarityClassName(this);">By Rarity&gt;Class&gt;Name</button>
<button class="gf-button" data-tdollsortbutton="true" disabled onclick="orderByName(this);">By Name</button>
<button class="gf-button" data-tdollsortbutton="true" onclick="orderByIndex(this);">By Index</button></div>
<button class="gf-button" data-tdollsortbutton="true" disabled onclick="orderByIndex(this);">By Index</button>
<div style="width:20px; height:20px; display:inline-block;" class="loading2 removeAfterInitIsg">&nbsp;</div></div>
 
<p>
Released on this server:<br/>
<button class="gf-button" data-tdollserverbutton="true" data-tdollserver="WIKI" disabled data-initialsort="true" onclick="switchServer(this);">All</button>
<button class="gf-button" data-tdollserverbutton="true" data-tdollserver="CN" disabled onclick="switchServer(this);">CN</button>
<button class="gf-button" data-tdollserverbutton="true" data-tdollserver="TW" disabled onclick="switchServer(this);">TW</button>
<button class="gf-button" data-tdollserverbutton="true" data-tdollserver="KR" disabled onclick="switchServer(this);">KR</button>
<button class="gf-button" data-tdollserverbutton="true" data-tdollserver="EN" disabled onclick="switchServer(this);">EN</button>
<button class="gf-button" data-tdollserverbutton="true" data-tdollserver="JP" disabled onclick="switchServer(this);">JP</button>
</p>
</includeonly>
</includeonly>



Revision as of 22:28, 24 June 2024


 

Released on this server:

Some heading