From 9307f943bd564211f6d21a34a78eb1698e9d1890 Mon Sep 17 00:00:00 2001 From: torhal Date: Mon, 8 Jun 2009 05:02:58 +0000 Subject: [PATCH] Moved addon:SortMissingRecipes() to here from AckisRecipeList.lua, and made it a local function. --- ARLFrame.lua | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/ARLFrame.lua b/ARLFrame.lua index 90207b0..4f192be 100644 --- a/ARLFrame.lua +++ b/ARLFrame.lua @@ -1302,6 +1302,82 @@ function addon:ResetGUI() end + + +------------------------------------------------------------------------------- +-- Sorts the recipe Database depending on the settings defined in the database. +------------------------------------------------------------------------------- +local SortMissingRecipes +do + local tsort = table.sort + + local sortFuncs = nil -- Sorting functions + local SortedRecipeIndex = {} -- Create a new array for the sorted index + + function SortMissingRecipes(RecipeDB) + if (not sortFuncs) then + sortFuncs = {} + sortFuncs["SkillAsc"] = function(a, b) + if (RecipeDB[a]["Level"] == RecipeDB[b]["Level"]) then + return RecipeDB[a]["Name"] < RecipeDB[b]["Name"] + else + return RecipeDB[a]["Level"] < RecipeDB[b]["Level"] + end + end + + sortFuncs["SkillDesc"] = function(a, b) + if (RecipeDB[a]["Level"] == RecipeDB[b]["Level"]) then + return RecipeDB[a]["Name"] < RecipeDB[b]["Name"] + else + return RecipeDB[b]["Level"] < RecipeDB[a]["Level"] + end + end + + sortFuncs["Name"] = function(a, b) + return RecipeDB[a]["Name"] < RecipeDB[b]["Name"] + end + + -- Will only sort based off of the first acquire type + sortFuncs["Acquisition"] = function (a, b) + local reca = RecipeDB[a]["Acquire"][1] + local recb = RecipeDB[b]["Acquire"][1] + if (reca and recb) then + if (reca["Type"] == recb["Type"]) then + return RecipeDB[a]["Name"] < RecipeDB[b]["Name"] + else + return reca["Type"] < recb["Type"] + end + else + return not not reca + end + end + + -- Will only sort based off of the first acquire type + sortFuncs["Location"] = function (a, b) + -- We do the or "" because of nil's, I think this would be better if I just left it as a table which was returned + local reca = RecipeDB[a]["Locations"] or "" + local recb = RecipeDB[b]["Locations"] or "" + reca = smatch(reca,"(%w+),") or "" + recb = smatch(recb,"(%w+),") or "" + if (reca == recb) then + return RecipeDB[a]["Name"] < RecipeDB[b]["Name"] + else + return (reca < recb) + end + end + end + twipe(SortedRecipeIndex) + + -- Get all the indexes of the RecipeListing + for n, v in pairs(RecipeDB) do + tinsert(SortedRecipeIndex, n) + end + tsort(SortedRecipeIndex, sortFuncs[addon.db.profile.sorting]) + + return SortedRecipeIndex + end +end + -- Under various conditions, I'm going to have to redisplay my recipe list -- This could happen because a filter changes, a new profession is chosen, or -- a new search occurred. Use this function to do all the dirty work @@ -1309,9 +1385,8 @@ end -- Description: local function ReDisplay() - addon:UpdateFilters(recipeDB, allSpecTable, playerData) - sortedRecipeIndex = addon:SortMissingRecipes(recipeDB) + sortedRecipeIndex = SortMissingRecipes(recipeDB) playerData.excluded_recipes_known, playerData.excluded_recipes_unknown = addon:GetExclusions(recipeDB,playerData.playerProfession) @@ -4838,7 +4913,7 @@ function addon:DisplayFrame( -- Acquire the list, then sort it recipeDB = self:GetRecipeTable() - sortedRecipeIndex = self:SortMissingRecipes(recipeDB) + sortedRecipeIndex = SortMissingRecipes(recipeDB) -- Take our sorted list, and fill up DisplayStrings initDisplayStrings() @@ -4856,7 +4931,6 @@ function addon:DisplayFrame( end - -- Description: Creates a new frame with the contents of a text dump so you can copy and paste -- Expected result: New frame with all recipes listed and acquire info -- Input: A text string of what to paste -- 1.7.9.5