From ad2c0b62e2d5205041ac8bcedebdedfb837156b2 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 26 May 2026 19:41:33 -0500 Subject: [PATCH 1/3] Right click to pin stats to sidebar Allows user to right click any item in the calcs tab to pin that item to the sidebar display. --- src/Classes/CalcSectionControl.lua | 13 +++++++++++-- src/Classes/CalcsTab.lua | 25 +++++++++++++++++++++++++ src/Modules/Build.lua | 10 ++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/Classes/CalcSectionControl.lua b/src/Classes/CalcSectionControl.lua index aa57f47960..4c65999d0a 100644 --- a/src/Classes/CalcSectionControl.lua +++ b/src/Classes/CalcSectionControl.lua @@ -74,6 +74,7 @@ function CalcSectionClass:IsMouseOver() return mOver, colData end elseif cursorX >= colData.x and cursorY >= colData.y and cursorX < colData.x + colData.width and cursorY < colData.y + colData.height then + colData.pinnedLabel = data.label return mOver, colData end end @@ -330,11 +331,19 @@ function CalcSectionClass:OnKeyDown(key, doubleClick) return end if mOverComp then + --Add the stat to siderbar under "Pinned:" + if key == "RIGHTBUTTON" then + self.calcsTab:AddSidebarPinnedStat(mOverComp) + return + end -- Pin the stat breakdown - self.calcsTab:SetDisplayStat(mOverComp, true) - return self.calcsTab.controls.breakdown + if key == "LEFTBUTTON" then + self.calcsTab:SetDisplayStat(mOverComp, true) + return self.calcsTab.controls.breakdown + end end end + return end diff --git a/src/Classes/CalcsTab.lua b/src/Classes/CalcsTab.lua index 1f896dd7a4..e1c110aaec 100644 --- a/src/Classes/CalcsTab.lua +++ b/src/Classes/CalcsTab.lua @@ -411,6 +411,31 @@ function CalcsTabClass:SetDisplayStat(displayData, pin) self.controls.breakdown:SetBreakdownData(displayData, pin) end +function CalcsTabClass:AddSidebarPinnedStat(displayData) + if not displayData or not displayData.format then + return + end + + self.sidebarPinnedStats = self.sidebarPinnedStats or { } + + local displayLabel = displayData.pinnedLabel or "" + local displayFormat = displayData.format or "" + + for index, pinned in ipairs(self.sidebarPinnedStats) do + local pinnedLabel = pinned.pinnedLabel or "" + local pinnedFormat = pinned.format or "" + + if pinnedLabel == displayLabel and pinnedFormat == displayFormat then + table.remove(self.sidebarPinnedStats, index) + self.build:RefreshStatList() + return + end + end + + table.insert(self.sidebarPinnedStats, displayData) + + self.build:RefreshStatList() +end function CalcsTabClass:CheckFlag(obj) local actor = self.input.showMinion and self.calcsEnv.minion or self.calcsEnv.player local skillFlags = actor.mainSkill.activeEffect.statSetCalcs.skillFlags diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index d2925e4312..44e43bf500 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -2257,6 +2257,16 @@ function buildMode:RefreshStatList() t_insert(statBoxList, { height = 14, align = "CENTER_X", x = 140, self.calcsTab.mainEnv.player.mainSkill.disableReason }) end self:AddDisplayStatList(self.displayStats, self.calcsTab.mainEnv.player) + if self.calcsTab.sidebarPinnedStats and #self.calcsTab.sidebarPinnedStats > 0 then + local actor = self.calcsTab.mainEnv.player + t_insert(statBoxList, { height = 10 }) + t_insert(statBoxList, { height = 18, "^7Pinned:" }) + for i, pinned in ipairs(self.calcsTab.sidebarPinnedStats) do + local label = pinned.pinnedLabel or ("Pinned " .. tostring(i)) + local value = formatCalcStr(pinned.format, actor, pinned) + t_insert(statBoxList, { height = 16, "^7" .. label, "^7" .. tostring(value) }) + end + end self:InsertItemWarnings() self:EstimatePlayerProgress() end From 7aa450630850815b62c07273af3a080585f0be40 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 26 May 2026 20:17:30 -0500 Subject: [PATCH 2/3] Added clear all button and tooltip Added clear all pinned button and a tooltip. Also rewrote classname to "toggle" to better describe its function. --- src/Classes/CalcSectionControl.lua | 2 +- src/Classes/CalcsTab.lua | 20 +++++++++++++++++++- src/Modules/Build.lua | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Classes/CalcSectionControl.lua b/src/Classes/CalcSectionControl.lua index 4c65999d0a..a2bd35e103 100644 --- a/src/Classes/CalcSectionControl.lua +++ b/src/Classes/CalcSectionControl.lua @@ -333,7 +333,7 @@ function CalcSectionClass:OnKeyDown(key, doubleClick) if mOverComp then --Add the stat to siderbar under "Pinned:" if key == "RIGHTBUTTON" then - self.calcsTab:AddSidebarPinnedStat(mOverComp) + self.calcsTab:ToggleSidebarPinnedStat(mOverComp) return end -- Pin the stat breakdown diff --git a/src/Classes/CalcsTab.lua b/src/Classes/CalcsTab.lua index e1c110aaec..7a4fc2b5e4 100644 --- a/src/Classes/CalcsTab.lua +++ b/src/Classes/CalcsTab.lua @@ -35,6 +35,16 @@ local CalcsTabClass = newClass("CalcsTab", "UndoHandler", "ControlHost", "Contro self.controls.search = new("EditControl", {"TOPLEFT",self,"TOPLEFT"}, {4, 5, 260, 20}, "", "Search", "%c", 100, nil, nil, nil, true) t_insert(self.controls, self.controls.search) + + self.controls.clearSidebarLabel = new("LabelControl", {"TOPLEFT", self, "TOPLEFT"}, {425, 5, 150, 18}, "Right-click any Calcs value to pin/unpin it to the sidebar.") + self.controls.clearSideBarPinnedStats = new("ButtonControl", {"TOPLEFT", self, "TOPLEFT"}, {270, 5, 150, 20}, "Clear Pinned Stats", function() + if self.sidebarPinnedStats and #self.sidebarPinnedStats > 0 then + self:ClearSidebarPinnedStats() + return + end + + end) + -- Special section for skill/mode selection self:NewSection(3, "SkillSelect", 1, colorCodes.NORMAL, {{ defaultCollapsed = false, label = "View Skill Details", data = { { label = "Socket Group", { controlName = "mainSocketGroup", @@ -411,7 +421,7 @@ function CalcsTabClass:SetDisplayStat(displayData, pin) self.controls.breakdown:SetBreakdownData(displayData, pin) end -function CalcsTabClass:AddSidebarPinnedStat(displayData) +function CalcsTabClass:ToggleSidebarPinnedStat(displayData) if not displayData or not displayData.format then return end @@ -436,6 +446,14 @@ function CalcsTabClass:AddSidebarPinnedStat(displayData) self.build:RefreshStatList() end + +function CalcsTabClass:ClearSidebarPinnedStats() + if not self.sidebarPinnedStats or #self.sidebarPinnedStats == 0 then + return + end + wipeTable(self.sidebarPinnedStats) + self.build:RefreshStatList() +end function CalcsTabClass:CheckFlag(obj) local actor = self.input.showMinion and self.calcsEnv.minion or self.calcsEnv.player local skillFlags = actor.mainSkill.activeEffect.statSetCalcs.skillFlags diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index 44e43bf500..916670703b 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -2260,7 +2260,7 @@ function buildMode:RefreshStatList() if self.calcsTab.sidebarPinnedStats and #self.calcsTab.sidebarPinnedStats > 0 then local actor = self.calcsTab.mainEnv.player t_insert(statBoxList, { height = 10 }) - t_insert(statBoxList, { height = 18, "^7Pinned:" }) + t_insert(statBoxList, { height = 18, "^7Pinned Calcs:" }) for i, pinned in ipairs(self.calcsTab.sidebarPinnedStats) do local label = pinned.pinnedLabel or ("Pinned " .. tostring(i)) local value = formatCalcStr(pinned.format, actor, pinned) From 351223ca53e781f42dc47aefa657b63b7542ace7 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 26 May 2026 20:30:19 -0500 Subject: [PATCH 3/3] Add ":" for final display Final polish before publishing --- src/Modules/Build.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index 916670703b..48b7d7459a 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -2264,7 +2264,7 @@ function buildMode:RefreshStatList() for i, pinned in ipairs(self.calcsTab.sidebarPinnedStats) do local label = pinned.pinnedLabel or ("Pinned " .. tostring(i)) local value = formatCalcStr(pinned.format, actor, pinned) - t_insert(statBoxList, { height = 16, "^7" .. label, "^7" .. tostring(value) }) + t_insert(statBoxList, { height = 16, "^7" .. label .. ":", "^7" .. tostring(value) }) end end self:InsertItemWarnings()