Since I really liked the idea of this addon I went on and tried some stuff, I hope you don't mind.
I changed the way it saved the loot so now it saves loot as hyperlink.
--extract the loot
local loot = string.sub(arg1, string.find(arg1, "|cff", 1, true), string.find(arg1, "|h|r", 1, true)+1).."|r"
I changed the way the data was being saved in the database.
if LootTrackerDB == nil then
LootTrackerDB = { }
end
if LootTrackerDB[looter] == nil then
LootTrackerDB[looter] = { }
end
LootTrackerDB[looter][timestamp] = loot
With this way of storing the data, you can easily use a sort function to sort between the data, or just print it all like this.
function LootTracker_Database(arg)
DEFAULT_CHAT_FRAME:AddMessage("Dumping Database:")
if arg == "name" then
LootTrackerDB_sorted = LootTracker_SortDB("name")
for _, key in pairs(LootTrackerDB_sorted) do
for name,_ in pairs(LootTrackerDB) do
if key == name then
for tstamp, loot in pairs(LootTrackerDB[name]) do
DEFAULT_CHAT_FRAME:AddMessage(name.." --> "..loot.." "..tstamp)
end
end
end
end
elseif arg == "loot" then
LootTrackerDB_sorted = LootTracker_SortDB("loot")
for _, key in pairs(LootTrackerDB_sorted) do
for name,_ in pairs(LootTrackerDB) do
for tstamp, loot in pairs(LootTrackerDB[name]) do
if key == loot then
DEFAULT_CHAT_FRAME:AddMessage(loot.." --> "..name.." "..tstamp)
end
end
end
end
elseif arg == "date" then
LootTrackerDB_sorted = LootTracker_SortDB("date")
for _, key in ipairs(LootTrackerDB_sorted) do
for name,_ in pairs(LootTrackerDB) do
for tstamp, loot in pairs(LootTrackerDB[name]) do
if key == tstamp then
DEFAULT_CHAT_FRAME:AddMessage(tstamp.." "..name.." --> "..loot)
end
end
end
end
else
for name,_ in pairs(LootTrackerDB) do
for tstamp, loot in pairs(LootTrackerDB[name]) do
DEFAULT_CHAT_FRAME:AddMessage(name.." --> "..loot.." "..tstamp)
end
end
end
end
function LootTracker_SortDB(arg)
local sortedKeys = { }
if arg == "name" then
for k, _ in pairs(LootTrackerDB) do
table.insert(sortedKeys, k)
end
elseif arg == "loot" then
for k, _ in pairs(LootTrackerDB) do
for l, _ in pairs(LootTrackerDB[k]) do
table.insert(sortedKeys, LootTrackerDB[k][l])
end
end
elseif arg == "date" then
for k, _ in pairs(LootTrackerDB) do
for l, _ in pairs(LootTrackerDB[k]) do
table.insert(sortedKeys, l)
end
end
end
table.sort(sortedKeys, function(a,b) return a<b end)
return sortedKeys
end
Use LootTracker_Database("name") / LootTracker_Database("loot") / LootTracker_Database("date") to print a sorted list of the database or leave empty to just print it as it is.
Would be cool to have a nice gui with a scroll list to put the db in later
