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.

102 lines
2.9 KiB

local WIT, core = ...
function core.FarmResultModule(name, data, category)
local self = core.GridModule(name, data, category)
local resultColumn = core.GridColumns.ResultsValueColumn()
self.Columns = {
core.GridColumns.ExpandRowColumn(),
core.GridColumns.ContextMenuColumn({ GetMenu = core.FarmResultItemMenu }),
core.GridColumns.ItemNameColumn(),
resultColumn,
core.GridColumns.LocationsColumn(),
core.GridColumns.ItemSellRateColumn(),
}
self.Sort = {
Column = resultColumn,
Direction = "DESC",
}
return self
end
local function addPlannedFarm(row)
local ids = core.Config.GetPlannedFarmIds()
if not tContains(ids, row.Data.Id) then
table.insert(ids, row.Data.Id)
end
local module = core.UI.MainWindow.CurrentModule()
core.FarmPlannerModule.ClearCache()
module.ClearCache()
module.Refresh()
end
local function removePlannedFarm(row)
core.TableHelper.RemoveValue(core.Config.GetPlannedFarmIds(), row.Data.Id)
local module = core.UI.MainWindow.CurrentModule()
core.FarmPlannerModule.ClearCache()
module.ClearCache()
module.Refresh()
end
local function importRoute(row)
local route = nil
if row.Data.Routes.MapId or type(row.Data.Routes) == "string" then
route = row.Data.Routes
else
route = row.Data.Routes[1]
end
if type(route) == "string" then
local result, data = AceSerializer:Deserialize(LibBase64.Decode(route))
if result and data and data.RouteZone and data.RouteKey and data.RouteName and data.RouteData then
route = data
else
route = nil
end
end
if not route then return end
core.UI.InputDialog({ Text = core.GetString("ImportRouteMessage"), Button1 = core.GetString("Import"), Data = route, HasEditBox = true, TextBoxValue = route.RouteName or core.GetString(route.Name), OnAccept = function(self, data)
core.RoutesHelper.ImportRoute(data, self.editBox:GetText())
ReloadUI()
end })
end
function core.FarmResultItemMenu(module, row)
local menu = {
{
Name = "ToDo",
DisplayName = core.GetString("ToDo"),
Action = addPlannedFarm,
ActionArg = row,
IsVisible = function(row) return not tContains(core.Config.GetPlannedFarmIds(), row.Data.Id) end
},
{
Name = "RemoveToDo",
DisplayName = core.GetString("RemoveFromPlannedFarms"),
Action = removePlannedFarm,
ActionArg = row,
IsVisible = function(row) return tContains(core.Config.GetPlannedFarmIds(), row.Data.Id) end
},
}
if core.RoutesHelper.IsRoutesAvailable() and row.Data.Routes then
table.insert(menu, {
Name = "Route",
DisplayName = core.GetString("ImportRoute"),
Action = importRoute,
ActionArg = row,
})
end
return menu
end