MediaWiki:Common.js

From Emps-World Wiki
Revision as of 13:48, 5 December 2018 by Thomy (Talk | contribs)

Jump to: navigation, search

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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Clear the cache in Tools → Preferences
/* Any JavaScript here will be loaded for all users on every page load. */

// TODO: link images directly, because the parser has already run at this point
// cannot use wiki commands here anymore.
// mapping slot id to a file
var slotToImg = [
    "c/ca/Helmetslot.png",
    "d/d7/Capeslot.png",
    "8/85/Amuletslot.png",
    "a/aa/Weaponslot.png",
    "9/94/Bodyslot.png",
    "9/91/Shieldslot.png",
    "Arms",
    "5/5e/Legsslot.png",
    "",
    "8/89/Glovesslot.png",
    "f/f8/Bootsslot.png",
    "",
    "c/ce/Ringslot.png",
    "5/54/Ammoslot.png",
    "7/77/Wingsslot.png",
    "d/d5/Auraslot.png"
];

$(document).ready(function() {
	function format(x) {
		return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
	}
	
    $(".item-bonus-table, .item-info-table").each(function() {
        var table = $(this);
        var itemId = $(this).data("item-id");
        
        $.get( "../scripts/fetch_item.php", { id: itemId }).done(function(data) {
            var json = JSON.parse(data);
            var hc = 0, dc = 0;

            //console.log("data1: "+JSON.stringify(data));
            //console.log("data2: "+data);
            //console.log("data3: "+json);
            //console.log("data4: "+json.name);
            
			// item info table
			if (table.is(".item-info-table")) {
				table.find("th").each(function() {
					if (dc % 2 === 1) {
						var idx = parseInt(dc / 2);
						var note = parseInt(json.note) === parseInt(itemId);
						if (note)
							note = "noted";
						else
							note = "yes";
						
						var halch = format(parseInt(json.price * 0.9375));
						var lalch = format(parseInt(json.price * 0.9375 * 0.85));
						var shop = format(Math.round(json.price * 0.6));
						
						if (idx > 0) {
							if (idx == 1) // tradeable
								$(this).text(json.trade);
							else if (idx == 2) // equippable
								$(this).text(json.slot === 6 ? "no" : "yes");
							else if (idx == 3) // stackable
								$(this).text(json.stack);
							else if (idx == 4) // noteable
								$(this).text(note);
							else if (idx == 5) // destroy
								$(this).text(json.destroy);
							else if (idx == 6) // general store
								$(this).text(shop);
							else if (idx == 7) // low alch
								$(this).text(lalch);
							else if (idx == 8) // high alch
								$(this).text(halch);
							else if (idx == 9) // weight
								$(this).text(json.weight+" kg");
							//else if (idx == 10) // examine
							//	$(this).text(json.stack);
						}
					}
					dc++;
				});
				
			// bonuses table
			} else {
				// iterate over headers
				table.find("th").each(function() {
					if (hc === 0)
						$(this).text(json.name);
					hc++;
				});
				
				// iterate over table data
				table.find("td").each(function() {
					if (dc === 0)
						$(this).text(json.mlAcc);
					else if (dc === 1)
						$(this).text(json.rnAcc);
					else if (dc === 2)
						$(this).text(json.mgAcc);
					else if (dc === 3)
						$(this).text(json.mlDef);
					else if (dc === 4)
						$(this).text(json.rnDef);
					else if (dc === 5)
						$(this).text(json.mgDef);
					else if (dc == 6)
						$(this).text(json.pray);
					else if (dc == 7) {
						this.innerHTML = "";
						var slotFile = slotToImg[json.slot];
						var slotName = slotFile.substring(5, slotFile.length-8);
						var iconLink = document.createElement("a");
						var iconImg = document.createElement("img");
						$(iconLink).attr("href", "/wiki/File:"+slotName+"slot.png");
						$(iconLink).attr("class", "image");
						$(iconImg).attr("alt", slotName+"slot.png");
						$(iconImg).attr("src", "/wiki/images/thumb/"+slotFile+"/30px-"+slotName+"slot.png");
						$(iconImg).attr("width", "30");
						$(iconImg).attr("height", "30");
						$(iconImg).attr("srcset", "/wiki/images/"+slotFile+" 1.5x, /wiki/images/"+slotFile+" 2x");
						iconLink.appendChild(iconImg);
						this.appendChild(iconLink);
					} else if (dc === 8)
						$(this).text(json.mlStr);
					else if (dc === 9)
						$(this).text(json.rnStr);
					else if (dc === 10)
						$(this).text(json.mgStr);
					else if (dc === 11)
						$(this).text(json.degrade === "1" ? "Yes" : "No");
					else if (dc === 12)
						$(this).text(json.repair === "1" ? "Yes" : "No");
					else if (dc === 13) {
						if (json.req === "")
							$(this).text("None");
						else
							$(this).text(json.req);
					} else if (dc === 14) {
						if (json.slot === "3")
							$(this).text(json.speed);
						else
							$(this).text("-");
					} else
						$(this).text(dc+" data column");
					
				dc++;
				});
			}
        });
    });
});