annotate Modules/DisplayInvested.lua @ 28:34daa46b644a

Added an interface to view how much you have invested in each item.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Fri, 16 Jul 2010 01:32:08 -0700
parents
children e6ddeb9f9994
rev   line source
Asa@28 1 local addonName, addonTable = ...;
Asa@28 2 local ItemAuditor = _G[addonName]
Asa@28 3
Asa@28 4 local AceGUI = LibStub("AceGUI-3.0")
Asa@28 5 local ScrollingTable = LibStub("ScrollingTable")
Asa@28 6
Asa@28 7 local investedCols = {
Asa@28 8 { name= "Item", width = 200,
Asa@28 9 ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...)
Asa@28 10 if fShow == true then
Asa@28 11 local _, link= strsplit("|", data[realrow][column], 2)
Asa@28 12 cellFrame.text:SetText(link)
Asa@28 13 end
Asa@28 14 end,
Asa@28 15 },
Asa@28 16 { name= "Invested Total", width = 100, align = "RIGHT",
Asa@28 17 ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...)
Asa@28 18 if fShow == true then
Asa@28 19 cellFrame.text:SetText(ItemAuditor:FormatMoney(data[realrow][column]))
Asa@28 20 end
Asa@28 21 end,
Asa@28 22 },
Asa@28 23 { name= "Invested each", width = 100, align = "RIGHT",
Asa@28 24 ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...)
Asa@28 25 if fShow == true then
Asa@28 26 cellFrame.text:SetText(ItemAuditor:FormatMoney(data[realrow][column]))
Asa@28 27 end
Asa@28 28 end,
Asa@28 29 },
Asa@28 30 { name= "Count", width = 50, defaultsort = "asc", },
Asa@28 31 }
Asa@28 32
Asa@28 33 local investedTable = false
Asa@28 34 local function ShowInvested(container)
Asa@28 35 if investedTable == false then
Asa@28 36 local window = container.frame
Asa@28 37 investedTable = ScrollingTable:CreateST(investedCols, 23, nil, nil, window)
Asa@28 38 investedTable.frame:SetPoint("BOTTOMLEFT",window, 10,10)
Asa@28 39 investedTable.frame:SetPoint("TOP", window, 0, -60)
Asa@28 40 investedTable.frame:SetPoint("RIGHT", window, -10,0)
Asa@28 41 investedTable:RegisterEvents({
Asa@28 42 ["OnEnter"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...)
Asa@28 43 if realrow then
Asa@28 44 local _, link= strsplit("|", data[realrow][1], 2)
Asa@28 45
Asa@28 46 GameTooltip:SetOwner(rowFrame, "ANCHOR_CURSOR")
Asa@28 47 GameTooltip:SetHyperlink(link)
Asa@28 48 GameTooltip:Show()
Asa@28 49 end
Asa@28 50 end,
Asa@28 51 ["OnLeave"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...)
Asa@28 52 GameTooltip:Hide()
Asa@28 53 end,
Asa@28 54 ["OnClick"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...)
Asa@28 55 if column == 3 then
Asa@28 56 GameTooltip:Hide()
Asa@28 57 end
Asa@28 58 end,
Asa@28 59 });
Asa@28 60 end
Asa@28 61 investedTable:Show()
Asa@28 62
Asa@28 63 local width = 80
Asa@28 64 for i, data in pairs(investedCols) do
Asa@28 65 width = width + data.width
Asa@28 66 end
Asa@28 67 if container.parent then
Asa@28 68 container.parent:SetWidth(width);
Asa@28 69 end
Asa@28 70
Asa@28 71
Asa@28 72 UpdateInvestedData()
Asa@28 73 end
Asa@28 74
Asa@28 75
Asa@28 76 local function switchTab(container, event, group)
Asa@28 77 container:ReleaseChildren()
Asa@28 78
Asa@28 79 if investedTab then investedTab:Hide() end
Asa@28 80
Asa@28 81 if group == "tab_invested" then
Asa@28 82 ShowInvested(container)
Asa@28 83 end
Asa@28 84 end
Asa@28 85
Asa@28 86
Asa@28 87
Asa@28 88 displayFrame = false
Asa@28 89 local function CreateFrames()
Asa@28 90 if not displayFrame then
Asa@28 91 -- Create the frame container
Asa@28 92 displayFrame = AceGUI:Create("Frame")
Asa@28 93 local window = displayFrame.frame;
Asa@28 94 displayFrame:SetTitle("ItemAuditor")
Asa@28 95 displayFrame:SetStatusText("")
Asa@28 96
Asa@28 97 displayFrame:SetLayout("Fill")
Asa@28 98
Asa@28 99 window:SetHeight(500);
Asa@28 100
Asa@28 101 local width = 80
Asa@28 102 for i, data in pairs(investedCols) do
Asa@28 103 width = width + data.width
Asa@28 104 end
Asa@28 105 window:SetWidth(width);
Asa@28 106
Asa@28 107 local tab = AceGUI:Create("TabGroup")
Asa@28 108 tab:SetLayout("Flow")
Asa@28 109 tab:SetTabs({{text="Invested", value="tab_invested"}})
Asa@28 110 tab:SetCallback("OnGroupSelected", switchTab)
Asa@28 111 tab:SelectTab("tab_invested")
Asa@28 112
Asa@28 113 displayFrame:AddChild(tab)
Asa@28 114 end
Asa@28 115 displayFrame:Show()
Asa@28 116 end
Asa@28 117
Asa@28 118
Asa@28 119
Asa@28 120
Asa@28 121
Asa@28 122 function UpdateInvestedData()
Asa@28 123 if investedTable then
Asa@28 124 tableData = {} --reset
Asa@28 125 local totalInvested = 0
Asa@28 126
Asa@28 127 local i = 1
Asa@28 128 local data
Asa@28 129 for link in pairs(ItemAuditor.db.factionrealm.items) do
Asa@28 130 local investedTotal, investedPerItem, count = ItemAuditor:GetItemCost(link)
Asa@28 131 local itemName, link = GetItemInfo(link)
Asa@28 132 if investedTotal > 0 then
Asa@28 133 tableData[i] = {
Asa@28 134 itemName.."|"..link,
Asa@28 135 investedTotal,
Asa@28 136 investedPerItem,
Asa@28 137 count,
Asa@28 138 }
Asa@28 139
Asa@28 140 totalInvested = totalInvested + investedTotal
Asa@28 141
Asa@28 142 i = i + 1
Asa@28 143 end
Asa@28 144 end
Asa@28 145
Asa@28 146 if investedTable.frame:IsShown() then
Asa@28 147 displayFrame:SetStatusText("Total Invested: "..ItemAuditor:FormatMoney(totalInvested))
Asa@28 148 end
Asa@28 149
Asa@28 150 investedTable:SetData(tableData, true)
Asa@28 151 end
Asa@28 152 end
Asa@28 153
Asa@28 154 function ItemAuditor:CreateFrames()
Asa@28 155 CreateFrames()
Asa@28 156 end
Asa@28 157