Files
Questie-X/Modules/Journey/tabs/MyJourney/MyJourneyTab.lua
T

103 lines
4.2 KiB
Lua

---@type QuestieJourney
local QuestieJourney = QuestieLoader:CreateModule("QuestieJourney")
local _QuestieJourney = QuestieJourney.private
-------------------------
--Import modules.
-------------------------
---@type QuestieJourneyUtils
local QuestieJourneyUtils = QuestieLoader:ImportModule("QuestieJourneyUtils");
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB");
---@type l10n
local l10n = QuestieLoader:ImportModule("l10n")
--- COMPATIBILITY ---
local CALENDAR_WEEKDAY_NAMES = QuestieCompat.CALENDAR_WEEKDAY_NAMES
local CALENDAR_FULLDATE_MONTH_NAMES = QuestieCompat.CALENDAR_FULLDATE_MONTH_NAMES
local AceGUI = LibStub("AceGUI-3.0");
--- Draw the "My Journey" tab
---@param container Frame
---@return SimpleGroup
function _QuestieJourney.myJourney:DrawTab(container)
local header = AceGUI:Create("Heading");
header:SetText(l10n('Your Recent History'));
header:SetFullWidth(true);
container:AddChild(header);
QuestieJourneyUtils:Spacer(container);
-- get last 5 elements from table for history
local counter = #Questie.db.char.journey;
local recentEvents = {};
for i = counter, counter-4, -1 do
if i <= 0 then
break;
end
recentEvents[i] = {};
recentEvents[i] = AceGUI:Create("Label");
recentEvents[i]:SetFullWidth(true);
local day = CALENDAR_WEEKDAY_NAMES[tonumber(date('%w', Questie.db.char.journey[i].Timestamp)) + 1];
local month = CALENDAR_FULLDATE_MONTH_NAMES[tonumber(date('%m', Questie.db.char.journey[i].Timestamp))];
local timestamp = Questie:Colorize(date( '[ '..day ..', '.. month ..' %d @ %H:%M ] ' , Questie.db.char.journey[i].Timestamp), 'blue');
-- if it's a quest event
if Questie.db.char.journey[i].Event == "Quest" then
local qName = QuestieDB.QueryQuestSingle(Questie.db.char.journey[i].Quest, "name");
if qName then
qName = Questie:Colorize(qName, 'gray');
if Questie.db.char.journey[i].SubType == "Accept" then
recentEvents[i]:SetText(timestamp .. Questie:Colorize(l10n('You Accepted the quest %s', qName), 'yellow'));
elseif Questie.db.char.journey[i].SubType == "Abandon" then
recentEvents[i]:SetText(timestamp .. Questie:Colorize(l10n('You Abandoned the quest %s', qName), 'yellow'));
elseif Questie.db.char.journey[i].SubType == "Complete" then
recentEvents[i]:SetText(timestamp .. Questie:Colorize(l10n('You Completed the quest %s', qName), 'yellow'));
end
end
elseif Questie.db.char.journey[i].Event == "Level" then
local level = Questie:Colorize(l10n('Level %s', Questie.db.char.journey[i].NewLevel), 'gray');
recentEvents[i]:SetText(timestamp .. Questie:Colorize(l10n('Congratulations! You reached %s !', level), 'yellow'));
elseif Questie.db.char.journey[i].Event == "Note" then
local title = Questie:Colorize(Questie.db.char.journey[i].Title, 'gray');
recentEvents[i]:SetText(timestamp .. Questie:Colorize(l10n('Note Created: %s', title), 'yellow'));
end
container:AddChild(recentEvents[i]);
end
if counter == 0 then
local justdoit = AceGUI:Create("Label");
justdoit:SetFullWidth(true);
justdoit:SetText(Questie:Colorize(l10n("It's about time you embark on your first Journey!"), 'yellow'));
container:AddChild(justdoit);
end
QuestieJourneyUtils:Spacer(container);
local treeHeader = AceGUI:Create("Heading");
treeHeader:SetText(l10n("%s's Journey", UnitName("player")));
treeHeader:SetFullWidth(true);
container:AddChild(treeHeader);
local noteButton = AceGUI:Create("Button");
noteButton:SetText(l10n('Add New Adventure Note'));
noteButton:SetPoint("RIGHT");
noteButton:SetCallback("OnClick", _QuestieJourney.ShowNotePopup);
container:AddChild(noteButton);
QuestieJourneyUtils:Spacer(container);
---@class SimpleGroup
local treeGroup = AceGUI:Create("SimpleGroup");
treeGroup:SetLayout("fill");
treeGroup:SetFullHeight(true);
treeGroup:SetFullWidth(true);
container:AddChild(treeGroup);
return treeGroup
end