You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
4.1 KiB

local WIT, core = ...
local AceGUI = LibStub("AceGUI-3.0")
local function ExportFarmPlanner()
local farms = core.FarmPlannerModule.GetData()
core.ExecutiveAssistantHelper.CreateToDoList(core.GetString("FarmPlanner"), farms)
end
local function moveUp(row)
local ids = core.Config.GetPlannedFarmIds()
local index = core.TableHelper.IndexOf(ids, row.Data.Id)
if index and index > 1 then
table.remove(ids, index)
table.insert(ids, index - 1, row.Data.Id)
core.FarmPlannerModule.ClearCache()
core.FarmPlannerModule.Refresh()
end
end
local function moveDown(row)
local ids = core.Config.GetPlannedFarmIds()
local index = core.TableHelper.IndexOf(ids, row.Data.Id)
if index and index < #ids then
table.remove(ids, index)
table.insert(ids, index + 1, row.Data.Id)
core.FarmPlannerModule.ClearCache()
core.FarmPlannerModule.Refresh()
end
end
local function removePlannedFarm(row)
core.UI.ConfirmableDialog({ Text = core.GetString("RemovePlannedFarmConfirmationMessage"), OnAccept = function()
core.TableHelper.RemoveValue(core.Config.GetPlannedFarmIds(), row.Data.Id)
core.FarmPlannerModule.ClearCache()
core.FarmPlannerModule.Refresh()
end })
end
local function farmPlannerItemMenu(module, row)
return {
{
Name = "Up",
DisplayName = core.GetString("Up"),
Action = moveUp,
ActionArg = row,
IsEnabled = function(row) return core.TableHelper.IndexOf(core.Config.GetPlannedFarmIds(), row.Data.Id) > 1 end
},
{
Name = "Down",
DisplayName = core.GetString("Down"),
Action = moveDown,
ActionArg = row,
IsEnabled = function(row) return core.TableHelper.IndexOf(core.Config.GetPlannedFarmIds(), row.Data.Id) < #(core.Config.GetPlannedFarmIds()) end
},
{
Name = "Remove",
DisplayName = core.GetString("Remove"),
Action = removePlannedFarm,
ActionArg = row,
},
}
end
local function farmPlannerModule(name, category)
local self = core.GridModule(name, {}, category)
local resultColumn = core.GridColumns.ResultsValueColumn({ Sortable = false })
self.Columns = {
core.GridColumns.ContextMenuColumn({ GetMenu = farmPlannerItemMenu }),
core.GridColumns.ItemNameColumn({ Sortable = false }),
resultColumn,
}
self.GetData = function ()
local ids = core.Config.GetPlannedFarmIds()
local allFarms = {}
local data = {}
for _, farm in pairs(core.Data.Results.Farms) do
allFarms[farm.Id] = farm
end
for _, farm in pairs(core.Config.GetUserFarms()) do
allFarms[farm.Id] = farm
end
for _, id in pairs(ids) do
if allFarms[id] then
table.insert(data, allFarms[id])
end
end
return data
end
local baseDraw = self.Draw
function self.Draw(container)
local frame = AceGUI:Create("SimpleGroup")
frame:SetLayout("List")
container:AddChild(frame)
local exportButton = nil
if core.ExecutiveAssistantHelper.IsExecutiveAssistantAvailable() then
exportButton = AceGUI:Create("Button")
exportButton:SetText(core.GetString("ExportToExecutiveAssistant"))
exportButton:SetFullWidth(true)
exportButton:SetCallback("OnClick", ExportFarmPlanner)
exportButton:SetDisabled(not core.ExecutiveAssistantHelper.IsExecutiveAssistantAvailable())
frame:AddChild(exportButton)
end
local gridFrame = AceGUI:Create("SimpleGroup")
gridFrame:SetFullWidth(true)
gridFrame:SetHeight(frame.frame:GetHeight() - (exportButton and exportButton.frame:GetHeight() or 0) - 10)
gridFrame:SetLayout("Fill")
baseDraw(gridFrame)
frame:AddChild(gridFrame)
end
return self
end
core.FarmPlannerModule = farmPlannerModule('FarmPlanner', 'FarmPlanner')
table.insert(core.Modules, core.FarmPlannerModule)