103 lines
4.2 KiB
Lua
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
|