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
136 lines
4.1 KiB
|
5 years ago
|
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)
|