diff --git a/src/dataArrays.js b/src/dataArrays.js
index d55455b..9aa959a 100644
--- a/src/dataArrays.js
+++ b/src/dataArrays.js
@@ -2,10 +2,40 @@ var skills = ["Attack","Defence","Strength","Constitution","Ranged","Prayer","Ma
]; //Used to turn skill ID's into usable names.
var apiQuestNamesCorrections = []; //Used to correct the API to the wiki names.
-apiQuestNamesCorrections["Great Brain Robbery"] = "The Graet Brain Robbery";
-apiQuestNamesCorrections["Curse of Arrav"] = "The Curse of Arrav";
+apiQuestNamesCorrections["A Rum Deal"] = "Rum Deal";
+apiQuestNamesCorrections["As A First Resort..."] = "As a First Resort";
apiQuestNamesCorrections["Chosen Commander"] = "The Chosen Commander";
-apiQuestNamesCorrections["Fairy Tale III - Battle at Orks Rift"] = "Fairy Tale III - Orks Rift";
-apiQuestNamesCorrections["Slug Menace"] = "The Slug Menace";
+apiQuestNamesCorrections["Curse of Arrav"] = "The Curse of Arrav";
apiQuestNamesCorrections["Dig Site"] = "The Dig Site";
-apiQuestNamesCorrections["Fremennik Isles"] = "The Fremennik Isles";
\ No newline at end of file
+apiQuestNamesCorrections["Dishonour among Thieves"] = ["Dishonour among Thieves", "Dishonor Among Thieves", "Dishonour Among Thieves"];
+apiQuestNamesCorrections["Evil Dave's big day out"] = "Evil Dave's Big Day Out";
+apiQuestNamesCorrections["Fairy Tale I - Growing Pains"] = ["Fairy Tale I - Growing Pains", "Fairy Tale Part I - Growing Pains"];
+apiQuestNamesCorrections["Fairy Tale II - Cure a Queen"] = ["Fairy Tale II - Cure a Queen", "Fairy Tale Part II - Cure a Queen"];
+apiQuestNamesCorrections["Fairy Tale III - Battle at Orks Rift"] = ["Fairy Tale III - Battle at Ork's Rift", "Fairy Tale III - Battle at Orks Rift", "Fairy Tale Part III – Battle at Orks Rift", "Fairy Tale Part III - Battle at Ork's Rift"];
+apiQuestNamesCorrections["Forgettable Tale of a Drunken Dwarf"] = "Forgettable Tale...";
+apiQuestNamesCorrections["Fremennik Isles"] = "The Fremennik Isles";
+apiQuestNamesCorrections["Garden of Tranquility"] = "Garden of Tranquillity";
+apiQuestNamesCorrections["Great Brain Robbery"] = "The Great Brain Robbery";
+apiQuestNamesCorrections["Horror from the Deep"] = ["Horror from the Deep", "Horror From the Deep"];
+apiQuestNamesCorrections["Mourning's End Part II"] = ["Mourning's End Part II", "Mourning's End Part II (The Temple of Light)"];
+apiQuestNamesCorrections["Prisoner of Glouphrie"] = "The Prisoner of Glouphrie";
+apiQuestNamesCorrections["Rat Catchers"] = "Ratcatchers";
+apiQuestNamesCorrections["Recipe for Disaster"] = "Recipe for Disaster: Defeating the Culinaromancer";
+apiQuestNamesCorrections["Recipe for Disaster: Awowogei"] = "Recipe for Disaster: Freeing King Awowogei";
+apiQuestNamesCorrections["Recipe for Disaster: Dwarf"] = "Recipe for Disaster: Freeing the Mountain dwarf";
+apiQuestNamesCorrections["Recipe for Disaster: Evil Dave"] = "Recipe for Disaster: Freeing Evil Dave";
+apiQuestNamesCorrections["Recipe for Disaster: Goblin Generals"] = "Recipe for Disaster: Freeing the Goblin generals";
+apiQuestNamesCorrections["Recipe for Disaster: Lumbridge Sage"] = "Recipe for Disaster: Freeing the Lumbridge Sage";
+apiQuestNamesCorrections["Recipe for Disaster: Pirate Pete"] = "Recipe for Disaster: Freeing Pirate Pete";
+apiQuestNamesCorrections["Recipe for Disaster: Sir Amik Varze"] = "Recipe for Disaster: Freeing Sir Amik Varze";
+apiQuestNamesCorrections["Recipe for Disaster: Skrach"] = "Recipe for Disaster: Freeing Skrach Uglogwee";
+apiQuestNamesCorrections["Recipe for Disaster: Starting Out"] = "Recipe for Disaster: Another Cook's Quest";
+apiQuestNamesCorrections["Slug Menace"] = "The Slug Menace";
+apiQuestNamesCorrections["Tale of the Muspah"] = ["The Tale of the Muspah", "The Tale of Muspah"];
+apiQuestNamesCorrections["Tears of Guthix"] = "Tears of Guthix (quest)";
+apiQuestNamesCorrections["The Darkness of Hallowvale"] = "Darkness of Hallowvale";
+apiQuestNamesCorrections["The Elemental Workshop I"] = "Elemental Workshop I";
+apiQuestNamesCorrections["The Elemental Workshop II"] = "Elemental Workshop II";
+apiQuestNamesCorrections["The Elemental Workshop III"] = "Elemental Workshop III";
+apiQuestNamesCorrections["The Elemental Workshop IV"] = "Elemental Workshop IV";
+apiQuestNamesCorrections["The Watchtower"] = "Watchtower";
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 8d5ff5b..b5a9c51 100644
--- a/src/main.js
+++ b/src/main.js
@@ -9,7 +9,7 @@ function addQuestCompletedChecks(userQuests){
var questTitle = $(this).html();
if (questTitle in userQuests){
userQuests[questTitle].handleQuest($(this));
- }
+ }
}
});
@@ -21,42 +21,67 @@ function addQuestCompletedChecks(userQuests){
*/
function addLevelDetailChecks(userLevels){
$("img").each(function(index){
- var thieving = false;
- if($(this).attr("alt") == "Thieving"){
- console.log($(this));
- thieving = true;
- console.log($(this).parent().parent().text());
- }
+ if (!($(this).attr("alt") in userLevels)){
+ return;
+ }
+
+ // var thieving = false;
+ // if($(this).attr("alt") == "Thieving"){
+ // console.log($(this));
+ // thieving = true;
+ // console.log($(this).parent()[0].nextSibling);
+ // // console.log($(this).parent().parent().clone().children().remove().end().text().replace(/^[^\d]*|[^\d]*$| /g, "").replace(/[^(\d+\/\d+)\d+]+/g, "\n"));
+ // }
var onQuestPage = window.location.href.indexOf("/wiki/Quests") !== -1;
- if (onQuestPage){
- var textArr = $(this).parent().parent().text().split(new RegExp("> "));
- var level = textArr[1];
- } else {
- var textArr = $(this).parent().parent().text().split(new RegExp(" |<"));
- var level = textArr[0];
+ var textInfront = true;
+ var level;
+ try {
+ // Try to read text infront of the image
+ var leadingText = $(this).parent()[0].previousSibling.textContent;
+ level = (leadingText !== null) ? (leadingText.match(/\d+(?!.*\d+)/) || [null])[0] : null;
+ } catch (error) {
+ textInfront = false;
+ try {
+ // Try to read text behind the image
+ var trailingText = $(this).parent()[0].nextSibling.textContent;
+ level = (trailingText !== null) ? (trailingText.match(/^\s\d+/) || [null])[0] : null;
+ } catch (error) {
+ // If both fail, go to next object
+ return;
+ }
}
- if (isNaN(level)){ //Check if it is a number.
+ if (isNaN(level) || level === null){ //Check if it is a number.
return;
}
- if (!($(this).attr("alt") in userLevels)){
- return;
- }
var skill = $(this).attr("alt");
if (level != "" && skill != ""){
if (userLevels[skill] >= level) {
- $(this).parent().parent().append('
');
-
+ if (textInfront){
+ $(this).parent().append('
');
+ } else {
+ $(this).parent().parent().append('
');
+ }
+
} else {
- if (onQuestPage){
- $(this).parent().after(" " + userLevels[skill]+"/");
+ if (textInfront){
+ var preText = $(this).parent()[0].previousSibling.textContent.replace(/(\d+)(?!.*\d+)/, userLevels[skill] + "/$1");
+ $(this).parent()[0].previousSibling.textContent = preText;
+ $(this).parent().append('
');
} else {
- $(this).parent().parent().prepend(userLevels[skill]+"/");
+ var trailingText = $(this).parent()[0].nextSibling.textContent.replace(/^ (\d+)/, " " + userLevels[skill] + "/$1");
+ $(this).parent()[0].nextSibling.textContent = trailingText;
+ $(this).parent().parent().append('
');
}
- $(this).parent().parent().append('
');
}
- $(this).parent().parent().css("white-space", "nowrap");
+
+ if (textInfront) {
+ $(this).parent().css("white-space", "nowrap");
+ } else {
+ $(this).parent().parent().css("white-space", "nowrap");
+ }
+
}
});
@@ -102,9 +127,16 @@ function loadUserQuests(username, tries){
userQuests[item["title"]] = questCompletionObject;
if (item["title"] in apiQuestNamesCorrections){
- var correctName = apiQuestNamesCorrections[item["title"]];
- userQuests[correctName] = userQuests[item["title"]];
- }
+ if (typeof(apiQuestNamesCorrections[item["title"]]) === "object") {
+ for (var i = 0; i < apiQuestNamesCorrections[item["title"]].length; i++) {
+ var correctName = apiQuestNamesCorrections[item["title"]][i];
+ userQuests[correctName] = userQuests[item["title"]];
+ }
+ } else {
+ var correctName = apiQuestNamesCorrections[item["title"]];
+ userQuests[correctName] = userQuests[item["title"]];
+ }
+ }
});
addQuestCompletedChecks(userQuests);
}
@@ -152,16 +184,17 @@ function getConfig(func){
function attachColorChange(){
var colorGreen = "rgb(57, 234, 57)";
+ var highlightClassName = "rs-wiki-quest-checker-highlight";
$("li:not(.questdetails li)").each(function(){
$(this).click(function(e){
//Do nothing if the list-item was not directly clicked
if(e.target !== e.currentTarget) return;
if ($(this).css("background-color") == colorGreen){
- $(this).css("background-color", "");
+ $(this).css("background-color", "").removeClass( highlightClassName );
} else {
- $(this).css("background-color", colorGreen);
- $(this).find("li").each(function(index) { $(this).css("background-color", colorGreen); });
+ $(this).css("background-color", colorGreen).addClass( highlightClassName );
+ $(this).find("li").each(function(index) { $(this).css("background-color", colorGreen).addClass( highlightClassName ); });
}
// Check if we need to color the parent.
if ($(this).parent().parent().prop('nodeName') != 'DIV'){
@@ -172,9 +205,9 @@ function attachColorChange(){
}
});
if (allGreen){
- $(this).parent().parent().css("background-color", colorGreen);
+ $(this).parent().parent().css("background-color", colorGreen).addClass( highlightClassName );
} else {
- $(this).parent().parent().css("background-color", "");
+ $(this).parent().parent().css("background-color", "").removeClass( highlightClassName );
}
}