From 6e50d4d132e50e47b0ad7a5b9d7265800cb5bde4 Mon Sep 17 00:00:00 2001 From: urnati Date: Sun, 19 Apr 2026 10:15:06 -0400 Subject: [PATCH] Alts : Fix sort when clikcing headers --- TitanAlts/TitanAlts.lua | 66 ++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/TitanAlts/TitanAlts.lua b/TitanAlts/TitanAlts.lua index bba9524..da54207 100755 --- a/TitanAlts/TitanAlts.lua +++ b/TitanAlts/TitanAlts.lua @@ -334,15 +334,10 @@ local function Cell_tt_hide(self, text, parent) tt:Hide() end -local function SortDB(self, tt_key) - - if alts_tt_sort_col == tt_key then - alts_tt_sort_ascend = not alts_tt_sort_ascend -- flip the sort - else - alts_tt_sort_ascend = true - end - alts_tt_sort_col = tt_key +---Local Sort the alts list per col and sort order set. +local function Sort_DB() + local tt_key = alts_tt_sort_col local sorter = nil if alts_tt_sort_ascend then sorter = function(a, b) @@ -357,10 +352,37 @@ local function SortDB(self, tt_key) for idx = 1, #alts_tt do table.sort(alts_tt, sorter) end +end + +---Local Called when user clicks a sortable col header. Ensure sort col and order are set then redraw. +---@param self any +---@param tt_key string +local function Sort_Click(self, tt_key) + + if alts_tt_sort_col == tt_key then + alts_tt_sort_ascend = not alts_tt_sort_ascend -- flip the sort + else + alts_tt_sort_ascend = true + end + alts_tt_sort_col = tt_key + -- Redraw tooltip Alts.GenTooltip(_G[TITAN_BUTTON]) end +---Local Called on display of tooltip; Ensure col and sort order set if first time otherwise use as is +local function Sort_Display() + + if alts_tt_sort_col == "" then + alts_tt_sort_col = 'name_titan' + alts_tt_sort_ascend = true + else + -- use it + end + + Sort_DB() +end + -- Grab the button text to display local function GetButtonText(id) local avgItemLevel, avgItemLevelEquipped, avgItemLevelPvp = GetAverageItemLevel() @@ -411,7 +433,7 @@ local function GenToonName(self, row, col, action, tt_info, toon_info) local next = nil if action == 'header' then row, next = self.qtooltip:SetCell(row, col, tt_info.title, headerFont, header_justify) - self.qtooltip:SetCellScript(row, col, "OnMouseDown", SortDB, tt_info.tt_key) + self.qtooltip:SetCellScript(row, col, "OnMouseDown", Sort_Click, tt_info.tt_key) total_shown = 0 elseif action == 'row' then local cell = (toon_info[tt_info.tt_key] or UNK) @@ -430,7 +452,7 @@ local function GenLevel(self, row, col, action, tt_info, toon_info) local next = nil if action == 'header' then row, next = self.qtooltip:SetCell(row, col, tt_info.title, headerFont, header_justify); - self.qtooltip:SetCellScript(row, col, "OnMouseDown", SortDB, tt_info.tt_key) + self.qtooltip:SetCellScript(row, col, "OnMouseDown", Sort_Click, tt_info.tt_key) elseif action == 'row' then local cell = (toon_info[tt_info.tt_key] or UNK) -- whole number or not known row, next = self.qtooltip:SetCell(row, col, cell, "RIGHT") @@ -447,7 +469,7 @@ local function GenILevel(self, row, col, action, tt_info, toon_info) local next = nil if action == 'header' then row, next = self.qtooltip:SetCell(row, col, tt_info.title, headerFont, header_justify) - self.qtooltip:SetCellScript(row, col, "OnMouseDown", SortDB, tt_info.tt_key) + self.qtooltip:SetCellScript(row, col, "OnMouseDown", Sort_Click, tt_info.tt_key) elseif action == 'row' then local cell = toon_info[tt_info.tt_key] -- need as number to format local str = "" @@ -517,7 +539,7 @@ local function GenMoney(self, row, col, action, tt_info, toon_info) local str = "" if action == 'header' then row, next = self.qtooltip:SetCell(row, col, tt_info.title, headerFont, header_justify) - self.qtooltip:SetCellScript(row, col, "OnMouseDown", SortDB, tt_info.tt_key) + self.qtooltip:SetCellScript(row, col, "OnMouseDown", Sort_Click, tt_info.tt_key) total_gold = 0 elseif action == 'row' then local cell = toon_info[tt_info.tt_key] -- need number to format @@ -545,7 +567,7 @@ local function GenPlayed(self, row, col, action, tt_info, toon_info) local str = "" if action == 'header' then row, next = self.qtooltip:SetCell(row, col, tt_info.title, headerFont, header_justify) - self.qtooltip:SetCellScript(row, col, "OnMouseDown", SortDB, tt_info.tt_key) + self.qtooltip:SetCellScript(row, col, "OnMouseDown", Sort_Click, tt_info.tt_key) total_played = 0 elseif action == 'row' then local cell = toon_info[tt_info.tt_key] -- need number to format @@ -778,17 +800,7 @@ local function GenDB(self, action) end end - -- Sort by name initially - -- cobbled from SortDB :) - local tt_key = "name_titan" - alts_tt_sort_col = tt_key - local sorter = function(a, b) - return a[tt_key] < b[tt_key] - end; - - for idx = 1, #alts_tt do - table.sort(alts_tt, sorter) - end + Sort_Display() end end @@ -1195,10 +1207,10 @@ Note : Each routine has 3 sections to process the column: - row : How each cell should look; add tooltip if needed - total : total OR x / total OR blank -Note : Sort is auto-magic. SortDB allows only one column to be sorted at a time. -SortDB sorts the 'row' data using tt_key field; not header ot total. +Note : Sort is auto-magic. Sort_Click allows only one column to be sorted at a time. +Sort_Click sorts the 'row' data using tt_key field; not header ot total. Alphabetic sort only - Deep in QTip all cells are strings. -SortDB 'flips' between ascending and descending. Usually ascending (A-Z) first but +Sort_Click 'flips' between ascending and descending. Usually ascending (A-Z) first but if the user is clicking a lot, it is possible they need to click twice to get the order they want. -- 1.7.9.5