Asa@28: local addonName, addonTable = ...; Asa@28: local ItemAuditor = _G[addonName] Asa@28: Asa@28: local AceGUI = LibStub("AceGUI-3.0") Asa@28: local ScrollingTable = LibStub("ScrollingTable") Asa@28: Asa@28: local investedCols = { Asa@28: { name= "Item", width = 200, Asa@28: ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...) Asa@28: if fShow == true then Asa@28: local _, link= strsplit("|", data[realrow][column], 2) Asa@28: cellFrame.text:SetText(link) Asa@28: end Asa@28: end, Asa@28: }, Asa@28: { name= "Invested Total", width = 100, align = "RIGHT", Asa@28: ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...) Asa@28: if fShow == true then Asa@28: cellFrame.text:SetText(ItemAuditor:FormatMoney(data[realrow][column])) Asa@28: end Asa@28: end, Asa@28: }, Asa@28: { name= "Invested each", width = 100, align = "RIGHT", Asa@28: ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...) Asa@28: if fShow == true then Asa@28: cellFrame.text:SetText(ItemAuditor:FormatMoney(data[realrow][column])) Asa@28: end Asa@28: end, Asa@28: }, Asa@28: { name= "Count", width = 50, defaultsort = "asc", }, Asa@28: } Asa@28: Asa@28: local investedTable = false Asa@28: local function ShowInvested(container) Asa@28: if investedTable == false then Asa@28: local window = container.frame Asa@28: investedTable = ScrollingTable:CreateST(investedCols, 23, nil, nil, window) Asa@28: investedTable.frame:SetPoint("BOTTOMLEFT",window, 10,10) Asa@28: investedTable.frame:SetPoint("TOP", window, 0, -60) Asa@28: investedTable.frame:SetPoint("RIGHT", window, -10,0) Asa@28: investedTable:RegisterEvents({ Asa@28: ["OnEnter"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...) Asa@28: if realrow then Asa@28: local _, link= strsplit("|", data[realrow][1], 2) Asa@28: Asa@28: GameTooltip:SetOwner(rowFrame, "ANCHOR_CURSOR") Asa@28: GameTooltip:SetHyperlink(link) Asa@28: GameTooltip:Show() Asa@28: end Asa@28: end, Asa@28: ["OnLeave"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...) Asa@28: GameTooltip:Hide() Asa@28: end, Asa@28: ["OnClick"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...) Asa@28: if column == 3 then Asa@28: GameTooltip:Hide() Asa@28: end Asa@28: end, Asa@28: }); Asa@28: end Asa@28: investedTable:Show() Asa@28: Asa@28: local width = 80 Asa@28: for i, data in pairs(investedCols) do Asa@28: width = width + data.width Asa@28: end Asa@28: if container.parent then Asa@28: container.parent:SetWidth(width); Asa@28: end Asa@28: Asa@28: Asa@28: UpdateInvestedData() Asa@28: end Asa@28: Asa@28: Asa@28: local function switchTab(container, event, group) Asa@28: container:ReleaseChildren() Asa@28: Asa@28: if investedTab then investedTab:Hide() end Asa@28: Asa@28: if group == "tab_invested" then Asa@28: ShowInvested(container) Asa@28: end Asa@28: end Asa@28: Asa@28: Asa@28: Asa@28: displayFrame = false Asa@28: local function CreateFrames() Asa@28: if not displayFrame then Asa@28: -- Create the frame container Asa@28: displayFrame = AceGUI:Create("Frame") Asa@28: local window = displayFrame.frame; Asa@28: displayFrame:SetTitle("ItemAuditor") Asa@28: displayFrame:SetStatusText("") Asa@28: Asa@28: displayFrame:SetLayout("Fill") Asa@28: Asa@28: window:SetHeight(500); Asa@28: Asa@28: local width = 80 Asa@28: for i, data in pairs(investedCols) do Asa@28: width = width + data.width Asa@28: end Asa@28: window:SetWidth(width); Asa@28: Asa@28: local tab = AceGUI:Create("TabGroup") Asa@28: tab:SetLayout("Flow") Asa@28: tab:SetTabs({{text="Invested", value="tab_invested"}}) Asa@28: tab:SetCallback("OnGroupSelected", switchTab) Asa@28: tab:SelectTab("tab_invested") Asa@28: Asa@28: displayFrame:AddChild(tab) Asa@28: end Asa@28: displayFrame:Show() Asa@28: end Asa@28: Asa@28: Asa@28: Asa@28: Asa@28: Asa@28: function UpdateInvestedData() Asa@28: if investedTable then Asa@28: tableData = {} --reset Asa@28: local totalInvested = 0 Asa@28: Asa@28: local i = 1 Asa@28: local data Asa@28: for link in pairs(ItemAuditor.db.factionrealm.items) do Asa@28: local investedTotal, investedPerItem, count = ItemAuditor:GetItemCost(link) Asa@28: local itemName, link = GetItemInfo(link) Asa@28: if investedTotal > 0 then Asa@28: tableData[i] = { Asa@28: itemName.."|"..link, Asa@28: investedTotal, Asa@28: investedPerItem, Asa@28: count, Asa@28: } Asa@28: Asa@28: totalInvested = totalInvested + investedTotal Asa@28: Asa@28: i = i + 1 Asa@28: end Asa@28: end Asa@28: Asa@28: if investedTable.frame:IsShown() then Asa@28: displayFrame:SetStatusText("Total Invested: "..ItemAuditor:FormatMoney(totalInvested)) Asa@28: end Asa@28: Asa@28: investedTable:SetData(tableData, true) Asa@28: end Asa@28: end Asa@28: Asa@28: function ItemAuditor:CreateFrames() Asa@28: CreateFrames() Asa@28: end Asa@28: