|
|
(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(' ');
| |
− | 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); |