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'+data[i].monster+'' } $( ".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)+'%'; } } ] }); }); }) }