SlayerWeightCalculator/js/script.js
2019-04-29 13:02:35 +02:00

275 lines
No EOL
7.8 KiB
JavaScript

String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
function toggleQuestAll(source) {
checkboxes = document.getElementsByName('quest');
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.prop("checked");
}
if (source.prop("checked") == true) {
$('.quests').hide(100);
}
else {
$('.quests').show(100);
}
}
function setBlocklists() {
// generate blocklist options, currently unused for static html
// may be reused when updates to monsters.json require new html block options
$.getJSON( "data/monsters.json", {format: "json"}, function( data ) {
var content = '';
for (i = 0; i < data.length; i++) {
content += '<option value="'+data[i].monster+'">'+data[i].monster+'</option>'
}
$( ".blocktask" ).each(function( index ) {
$(this).append(content)
});
})
}
$(document).ready(function() {
// starting functions on page load
applyChanges('krystilia');
toggleQuestAll($('#toggleQuests'));
});
function filterTasks(data) {
index_list = []
for (i = 0; i < data.length; i++) {
switch (data[i].monster.toUpperCase()) {
// Slayer point unlocks
case 'RED DRAGONS':
if ($("#reddrags").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'MITHRIL DRAGONS':
if ($("#mithdrags").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'AVIANSIES':
if ($("#aviansies").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'TZHAAR':
if ($("#tzhaar").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'LIZARDMEN':
if ($("#lizardmen").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'BOSSES':
if ($("#bosses").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'FOSSIL ISLAND WYVERNS':
if ($("#fossilwyverns").prop("checked") == true) {
index_list.unshift(i)
}
break;
// Quest task unlocks
case 'SPIRITUAL CREATURES':
if ($("#spiritcreatures").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'RUNE DRAGONS':
case 'ADAMANT DRAGONS':
if ($("#dragonslayer2").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'BRINE RATS':
if ($("#brinerats").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'DAGANNOTHS':
if ($("#dagannoths").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'DARK BEASTS':
if ($("#darkbeasts").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'DUST DEVILS':
if ($("#dustdevils").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'FOSSIL ISLAND WYVERNS':
if ($("#bonevoyage").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'MUTATED ZYGOMITES':
if ($("#mutatedzygomites").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'CAVE HORRORS':
case 'JUNGLE HORRORS':
if ($("#cabinfever").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'ELVES':
if ($("#elves").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'FEVER SPIDERS':
if ($("#feverspiders").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'MOLANISKS':
if ($("#molanisks").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'SHADOW WARRIORS':
if ($("#shadowwarriors").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'BLUE DRAGONS':
case 'BLACK DRAGONS':
case 'RED DRAGONS':
case 'IRON DRAGONS':
case 'STEEL DRAGONS':
if ($("#dragonslayer").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'MINIONS OF SCABARAS':
if ($("#scabaras").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'SUQAHS':
if ($("#suqahs").prop("checked") == false) {
index_list.unshift(i)
}
break;
case 'MOGRES':
if ($("#mogres").prop("checked") == false) {
index_list.unshift(i)
}
}
// Task blocks
$( ".blocktask" ).each(function( index ) {
if ($(this).val().toUpperCase() == data[i].monster.toUpperCase()) {
index_list.unshift(i)
}
});
// Slayer requirement
if (data[i].slayer_req > $("#slayerlevel").val()) {
index_list.unshift(i)
}
// Defence requirement
if (data[i].defence_req > $("#defencelevel").val()) {
index_list.unshift(i)
}
// Combat requirement
if (data[i].combat_req > $("#combatlevel").val()) {
index_list.unshift(i)
}
}
unique_list = index_list.filter(onlyUnique);
for (var i in unique_list) {
console.log(data[unique_list[i]])
data.splice(unique_list[i], 1)
}
return data
}
function sumWeights(data) {
var total = 0;
for (var i in data) {
total += data[i].taskweight
}
return total
}
var table, currentMaster;
function deleteOldDataTable() {
table = $('#master').DataTable()
table.destroy();
}
function setMasterTitle(master) {
$("#mastertitle").text(master.capitalize());
}
function applyChanges(master) {
currentMaster = master;
deleteOldDataTable();
setMasterTitle(master);
$.getJSON( "data/"+master+".json", function( data ) {
var data = filterTasks(data),
totalweight = sumWeights(data);
$(document).ready(function() {
table = $('#master').DataTable({
"order": [[ 2, "desc" ]],
"pageLength": 15,
"data": data,
"columns": [
{ data: 'monster'},
{ data: 'taskweight'},
{ data: null, render: function ( data, type, row ) {
return (row.taskweight / totalweight * 100 ).toFixed(2)+'%';
}
}
]
});
});
})
}