MediaWiki:SCalScript.js
From Istaria Lexica
Revision as of 12:12, 17 June 2022 by Elteria Shadowhand (talk | contribs)
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/** * Skeleton Key Calculator V 0.1 * Elteria Shadowhand */ $(document).ready(function(){ if(document.getElementById('SCalMain')) { let SCalBaseResources = []; let initialCount = 10; 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 jquery-tablesorter">' + '<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(' '); 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); } } } } });