zz_Money/broker.lua

160 lines
5.6 KiB
Lua
Executable File

local addonName, addon = ...
local childName = addon['childName']
local child = addon[childName]
local db, dbr, dbp, L, lineIn, lineOut, session, faction, realm
local zzLDB = LibStub:GetLibrary("zzLDB")
local function cdbCheck(n,realm)
db[realm] = db[realm] or {}
db[realm][n] = db[realm][n] or { currentGold = 0 }
end
child.cdbCheck = cdbCheck
local function getSumToday(d)
if(faction=='Neutral') then return 0,0 end
local sumIn,sumOut = 0,0
d = d or 0
local day = child:getDateString() + d
for a,b in pairs(dbr['activity'][faction][tostring(day)] or {}) do
if(b < 0) then
sumOut = sumOut + b
else
sumIn = sumIn + b
end
end
return sumOut,sumIn
end
local function getSumWeek()
local sumIn, sumOut = 0,0
local sumWeekIn, sumWeekOut = 0,0
for a=0,6 do
sumOut, sumIn = getSumToday(a * -1)
sumWeekIn = sumWeekIn + sumIn
sumWeekOut = sumWeekOut + sumOut
end
return sumWeekOut,sumWeekIn
end
local connectedRealms
local function Helper_Tooltip3(realm)
if(not db['connectedRealms']) then return end
connectedRealms = connectedRealms or GetAutoCompleteRealms()
for k, v in pairs(GetAutoCompleteRealms()) do
if(v == realm) then
return true
end
end
end
child.Helper_Tooltip3 = Helper_Tooltip3
local function OnClick(self, button)
zzLDB:DefaultOnClick(self, button, addon, childName)
end
local function OnTooltipShow(tip)
tip:AddLine(childName)
if(faction == 'Neutral') then
tip:AddLine(L['neutral'])
return
end
local sessdiff = dbp['currentGold'] - session['start']
local sdr,sdg,sdb = 1, 1, 1
if(sessdiff<0) then
sdr,sdg,sdb = 1, 0, 0
end
tip:AddDoubleLine(L['Sitzung'], child:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
tip:AddDoubleLine(lineIn, child:displayMoney(session['income'], db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddDoubleLine(lineOut, child:displayMoney(abs(session['expense']), db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddLine(' ')
local sumOut,sumIn = getSumToday()
sessdiff = sumOut+sumIn
if(sessdiff<0) then
sdr,sdg,sdb = 1, 0, 0
else
sdr,sdg,sdb = 1, 1, 1
end
tip:AddDoubleLine(L['Heute'], child:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
tip:AddDoubleLine(lineIn, child:displayMoney(sumIn, db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddDoubleLine(lineOut, child:displayMoney(abs(sumOut), db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddLine(' ')
local sumOut,sumIn = getSumToday(-1)
sessdiff = sumOut+sumIn
if(sessdiff<0) then
sdr,sdg,sdb = 1, 0, 0
else
sdr,sdg,sdb = 1, 1, 1
end
tip:AddDoubleLine(L['Gestern'], child:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
tip:AddDoubleLine(lineIn, child:displayMoney(sumIn, db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddDoubleLine(lineOut, child:displayMoney(abs(sumOut), db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddLine(' ')
local sumOut,sumIn = getSumWeek()
sessdiff = sumOut+sumIn
if(sessdiff<0) then
sdr,sdg,sdb = 1, 0, 0
else
sdr,sdg,sdb = 1, 1, 1
end
tip:AddDoubleLine(L['7-Tage'], child:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
tip:AddDoubleLine(lineIn, child:displayMoney(sumIn, db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddDoubleLine(lineOut, child:displayMoney(abs(sumOut), db['shortMoneyTip']),1,1,1,1,1,1)
tip:AddLine(' ')
local sum = 0
local ttlist = {}
if(addon['db']['sv']['profileKeys']) then
for k,v in pairs(addon['db']['sv']['profileKeys']) do
local n,_,m = strsplit(' ',k,3)
if(n) then
m = string.gsub(m, "%s+", "")
local cr = Helper_Tooltip3(m)
if(m == realm or cr) then
cdbCheck(n, m)
if( faction == db[m][n]['faction']) then
-- sum = sum + db[m][n]['currentGold']
ttlist[k] = db[m][n]['currentGold']
end
elseif(db['accountMoney']) then
-- sum = sum + db[m][n]['currentGold']
end
end
end
end
for _,v in pairs(child:sortArray(ttlist,db['sortDir'])) do
local n,_,m = strsplit(' ',v,3)
m = string.gsub(m, "%s+", "")
local cr = Helper_Tooltip3(m)
local rm = cr and m or realm
tip:AddDoubleLine(
child:classcolor(n,db[rm][n]['class']),
child:displayMoney(db[rm][n]['currentGold']+(db[rm][n]['incoming'] or 0), db['shortMoneyTip']),
0,1,0,
1,1,1
)
end
tip:AddLine(' ')
tip:AddDoubleLine(L['Gesamt'],child:displayMoney(child:GetGold(db['displaySelTT'] or 2), db['shortMoneyTip']),0,1,0,1,1,1)
end
child['ldb'] = { -- https://github.com/tekkub/libdatabroker-1-1/wiki/Data-Specifications
['type'] = 'data source', -- required: 'data source' or 'launcher'
['text'] = childName, -- required/optional for launcher
['icon'] = 'Interface\\Icons\\INV_Misc_Bag_10_Blue', -- optional/required for launcher
['OnClick'] = OnClick, -- optional/required for launcher
['OnTooltipShow'] = OnTooltipShow, -- optional
}
function child:OnText(objname, message)
local ldbobj = zzLDB:GetLDB(objname)
if(ldbobj['text'] ~= message) then
ldbobj['text'] = message
end
end
local init = {
Setup = function(self, childName, event)
L = child['storage']['L']
db = child['storage']['db']
dbr = child['storage']['dbr']
dbp = child['storage']['dbp']
session = child['storage']['session']
faction = child['storage']['faction']
realm = child['storage']['realm']
local folder = addonName ~= childName and format("Interface\\AddOns\\%s\\%s", addonName, childName) or format("Interface\\AddOns\\%s", childName)
lineIn = format("|T%s:0|t %s", format("%s\\in.tga", folder), L['Einnahmen'])
lineOut = format("|T%s:0|t %s", format("%s\\out.tga", folder), L['Ausgaben'])
end
}
addon.RegisterCallback(init, format("Init%s", childName), 'Setup', childName)