Difference between revisions of "MediaWiki:SCalScript.js"

From Istaria Lexica

(Replaced content with "let SCalStateCheck = setInterval(() => { 'use strict'; if (document.readyState === 'complete') { clearInterval(SCalStateCheck); let mainDivId = 'SCalMain'; //...")
Tag: Replaced
 
(35 intermediate revisions by 2 users not shown)
Line 1: Line 1:
/**
+
let SCalStateCheck = setInterval(() => {
* Skeleton Key Calculator V 0.1
+
   'use strict';
* Elteria Shadowhand
+
  if (document.readyState === 'complete') {
*/
+
     clearInterval(SCalStateCheck);
$(document).ready(function(){
+
     let mainDivId = 'SCalMain'; // ID of the main content box. Can be a <div> or whatever.
   if(document.getElementById('SCalMain')) {
+
     if (document.getElementById(mainDivId)) {
    let SCalBaseResources = [];
+
       var url = mw.util.getUrl('Product Calculator', { product: 'Skeleton Key' });
    let initialCount = 10;
+
       window.location.href = url;
 
 
    SCalPrintHeader();
 
 
 
    $('#SCalMain').append('<center><table>'
 
        + '<tr valign="top">'
 
          + '<td id="SCalResourcesrow1"></td>'
 
          + '<td id="SCalResourcesrow2"></td>'
 
        + '</tr>'
 
      + '</table></center>'
 
    );
 
 
 
    $('#SCalResourcesrow1').append('<div id="SCalResources"></div>');
 
   
 
    SCalCalculateNow();
 
    SCalPrintBaseResources();
 
   
 
    $('#SCalCountBtn').click(function(){
 
      SCalCalculateNow();
 
      SCalPrintBaseResources();
 
     });
 
   
 
    $('#SCalCountInput').keypress(function(event) {
 
      if(event.key === "Enter") {
 
        SCalCalculateNow();
 
        SCalPrintBaseResources();
 
      }
 
     });
 
   
 
    function SCalCalculateNow() {
 
      SCalValidate();
 
      var keyCount = $('#SCalCountInput').val();
 
      SCalBaseResources = [];
 
      $('#SCalResources').html('');
 
      $('#SCalResources').append('<h2><span id="mw-headline">Tree of needed products</span></h2>');
 
      $('#SCalResources').append('<ul>'
 
        + '<li>' + SCalPrintResource('Enchanted Adamantium-Mithril Bar',keyCount*3,false,'SCalMainResource')
 
          + '<ul>'
 
            + '<li>' + SCalPrintResource('Gozar\'s Blessing',keyCount*6,false,'SCalSubResource')
 
              + '<ul>'
 
                + '<li>' + SCalPrintResource('Meltanis\' Prayer',keyCount*6,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Travertine Spell Shard',keyCount*6,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Travertine Brick',keyCount*12,false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Travertine Slab',keyCount*24,true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                    + '<li>' + SCalPrintResource('Radiant Essence Orb',keyCount*24,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Radiant Essence',keyCount*48,true,'SCalBaseResource') + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
                + '<li>' + SCalPrintResource('Primal Burst III',keyCount*6,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Marble Spell Shard',keyCount*30,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Marble Brick',keyCount*60,false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Marble Slab',keyCount*120,true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                    + '<li>' + SCalPrintResource('Shining Essence Orb',keyCount*54,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Shining Essence',keyCount*108,true,'SCalBaseResource') + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
                + '<li>' + SCalPrintResource('Gold Papyrus Sheet',keyCount*12,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Gold Papyrus Stem',keyCount*24,true,'SCalBaseResource') + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
                + '<li>' + SCalPrintResource('Energy Strike V',keyCount*6,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Marble Spell Shard',keyCount*24,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Marble Brick',keyCount*48,false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Marble Slab',keyCount*96,true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                    + '<li>' + SCalPrintResource('Shining Essence Orb',keyCount*42,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Shining Essence',keyCount*84,true,'SCalBaseResource') + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
                + '<li>' + SCalPrintResource('Ice Bomb V',keyCount*6,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Marble Spell Shard',keyCount*30,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Marble Brick',keyCount*60,false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Marble Slab',keyCount*120,true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                    + '<li>' + SCalPrintResource('Shining Essence Orb',keyCount*64,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Shining Essence',keyCount*108,true,'SCalBaseResource') + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
                + '<li>' + SCalPrintResource('Fiery Strike V',keyCount*6,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Marble Spell Shard',keyCount*36,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Marble Brick',keyCount*72,false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Marble Slab',keyCount*144,true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                    + '<li>' + SCalPrintResource('Shining Essence Orb',keyCount*66,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Shining Essence',keyCount*132,true,'SCalBaseResource') + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
              + '</ul>'
 
            + '</li>'
 
            + '<li>' + SCalPrintResource('Hardened Adamantium-Mithril Bar',keyCount*6,false,'SCalSubResource')
 
              + '<ul>'
 
                + '<li>' + SCalPrintResource('Solution of Majorita',keyCount*12,false,'SCalSubResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Thornwood Bowl',keyCount*12,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Thornwood Sap',keyCount*36,true,'SCalBaseResource')
 
                        + '<li>' + SCalPrintResource('Thornwood Board',keyCount*60,false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Thornwood Log',keyCount*120,true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '</li>'
 
                    + '<li>' + SCalPrintResource('Crystallized Travertine Brick',keyCount*60,false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Unfocused Violet Azulyte Crystal',keyCount*60,true,'SCalBaseResource') + '</li>'
 
                        + '<li>' + SCalPrintResource('Travertine Slab',keyCount*60,true,'SCalBaseResource') + '</li>'
 
                      + '</ul>'
 
                    + '<li>' + SCalPrintResource('Purified Radiant Essence Orb',keyCount*12, false,'SCalBaseResource')
 
                      + '<ul>'
 
                        + '<li>' + SCalPrintResource('Radiant Essence Orb',keyCount*12, false,'SCalBaseResource')
 
                          + '<ul>'
 
                            + '<li>' + SCalPrintResource('Radiant Essence',keyCount*24, true,'SCalBaseResource') + '</li>'
 
                          + '</ul>'
 
                        + '</li>'
 
                      + '</ul>'
 
                    + '<li>' + SCalPrintResource('Water',keyCount*180, true) + '</li>'
 
                  + '</ul>'
 
                + '<li>' + SCalPrintResource('Adamantium-Mithril Bar',keyCount*6, false,'SCalBaseResource')
 
                  + '<ul>'
 
                    + '<li>' + SCalPrintResource('Mithril Ore',keyCount*18, true,'SCalBaseResource') + '</li>'
 
                    + '<li>' + SCalPrintResource('Adamantium Ore',keyCount*18, true,'SCalBaseResource') + '</li>'
 
                  + '</ul>'
 
                + '</li>'
 
              + '</ul>'
 
            + '</li>'
 
          + '</ul>'
 
        + '</li>'
 
        + '<li>' + SCalPrintResource('Skeleton Key Mold',keyCount*1,false,'SCalMainResource')
 
          + '<ul>'
 
            + '<li>' + SCalPrintResource('Skeleton Key Pattern',keyCount*1, true,'SCalBaseResource') + '</li>'
 
            + '<li>' + SCalPrintResource('Porcelain Clay Chunk',keyCount*2, true,'SCalBaseResource') + '</li>'
 
          + '</ul>'
 
        + '</li>'
 
      + '</ul>');
 
    }
 
 
 
    function SCalPrintHeader(){
 
      $('#SCalMain').append('<h1 id="SCalH1">The Calculator</h1>');
 
      $('#SCalMain').append('<center><label for="SCalCountInput" id="SCalCountInputLbl">How much Skeleton Keys would you want to create?</label></center>');
 
      $('#SCalMain').append('<center><input type="number" id="SCalCountInput" name="SCalCountInput" value="' + initialCount + '" size="6"><input type="button" id="SCalCountBtn" value="Calculate now!"></center>');
 
      $('#SCalMain').append('<div id="SCalErrorText"></div>');
 
      $('#SCalMain').append('<br />');
 
      $('#SCalMain').append('<br /></center>');
 
     };
 
   
 
    function SCalPrintResource(name, count, isbaseresource, cssclass){
 
      if(isbaseresource) {
 
        objIndex = SCalBaseResources.findIndex((obj => obj.name == name));
 
        if(objIndex == -1) {
 
          SCalBaseResources.push({
 
            'name' : name,
 
            'count' : count
 
          });
 
        } else {
 
          SCalBaseResources[objIndex].count += count;
 
        }
 
       }
 
      return '<span class="' + cssclass + '"><a href="' + mw.util.getUrl(name) + '">' + name + '</a>: ' + count + '</span>';
 
    };
 
 
 
    function SCalPrintBaseResources() {
 
      SCalBaseResources.sort(SCalCompare('name'))
 
      $('#SCalResourcesrow2').html('');
 
       $('#SCalResourcesrow2').append('<h2><span id="mw-headline">Overview of base resources</span></h2>');
 
      $('#SCalResourcesrow2').append('<table id="SCalBaseResourceTable" class=wikitable sortable>'
 
        + '<tr>'
 
          + '<th align="left">Resource</th>'
 
          + '<th align="left">Need</th>'
 
        + '</tr>'
 
      );
 
     
 
      for(var index in SCalBaseResources) {
 
        $('#SCalBaseResourceTable').append('<tr>'
 
            + '<td><a href="' + mw.util.getUrl(SCalBaseResources[index].name) + '">' + SCalBaseResources[index].name + '</a></td>'
 
            + '<td>' + SCalBaseResources[index].count + '</td>'
 
          + '</tr>'
 
        );
 
      }
 
      $('#SCalResources').append('</table>');
 
    }
 
 
 
    function SCalCompare(prop) {   
 
        return function(a, b) {   
 
            if (a[prop] > b[prop]) {   
 
                return 1;   
 
            } else if (a[prop] < b[prop]) {   
 
                return -1;   
 
            }
 
            return 0;   
 
        }   
 
    }
 
   
 
    function SCalValidate() {
 
      var value = $('#SCalCountInput').val();
 
      $('#SCalErrorText').html('&nbsp;');
 
      if(!(!isNaN(value) &&
 
            parseInt(Number(value)) == value &&
 
            !isNaN(parseInt(value, 10)))) {
 
        $('#SCalErrorText').html('<center>This was not a number! I\'ve reset the counter to ' + initialCount + ' for you.</center>');
 
        $('#SCalCountInput').val(initialCount);
 
      } else {
 
        if(value < 1 || value > 5000) {
 
          $('#SCalErrorText').html('<center>Please provide a number between 1 and 5000</center>');
 
          $('#SCalCountInput').val(initialCount);
 
        }
 
      }
 
 
     }
 
     }
 
   }
 
   }
});
+
}, 50);

Latest revision as of 16:44, 12 August 2022

let SCalStateCheck = setInterval(() => {
  'use strict';
  if (document.readyState === 'complete') {
    clearInterval(SCalStateCheck);
    let mainDivId = 'SCalMain'; // ID of the main content box. Can be a <div> or whatever.
    if (document.getElementById(mainDivId)) {
      var url = mw.util.getUrl('Product Calculator', { product: 'Skeleton Key' });
      window.location.href = url;
    }
  }
}, 50);