-- ------------------------------------------------------------------------------ -- -- TradeSkillMaster -- -- https://tradeskillmaster.com -- -- All Rights Reserved - Detailed license information included with addon. -- -- ------------------------------------------------------------------------------ -- local _, TSM = ... local ObjectPool = TSM.Include("Util.ObjectPool") local QueryScrollingTableInfo = TSM.Include("LibTSMClass").DefineClass("QueryScrollingTableInfo", TSM.UI.Util.ScrollingTableInfo) local QueryScrollingTableColumnInfo = TSM.Include("LibTSMClass").DefineClass("QueryScrollingTableColumnInfo", TSM.UI.Util.ScrollingTableColumnInfo) TSM.UI.Util.QueryScrollingTableInfo = QueryScrollingTableInfo QueryScrollingTableInfo._COL_INFO_POOL = ObjectPool.New("QUERY_SCROLLING_TABLE_COL_INFO", QueryScrollingTableColumnInfo, 1) -- ============================================================================ -- QueryScrollingTableColumnInfo Class -- ============================================================================ function QueryScrollingTableColumnInfo.__init(self) self.__super:__init() self._textField = nil self._iconField = nil self._tooltipField = nil self._sortField = nil end function QueryScrollingTableColumnInfo._Release(self) self.__super:_Release() self._textField = nil self._iconField = nil self._tooltipField = nil self._sortField = nil end function QueryScrollingTableColumnInfo.SetTextFunction(self) error("This method is not allowed for QueryScrollingTableColumnInfo") end function QueryScrollingTableColumnInfo.SetIconFunction(self, func) error("This method is not allowed for QueryScrollingTableColumnInfo") end function QueryScrollingTableColumnInfo.SetTooltipFunction(self, func) error("This method is not allowed for QueryScrollingTableColumnInfo") end function QueryScrollingTableColumnInfo.SetTextInfo(self, field, func) self._textField = field self._textFunc = func return self end function QueryScrollingTableColumnInfo.SetIconInfo(self, field, func) self._iconField = field self._iconFunc = func return self end function QueryScrollingTableColumnInfo.SetTooltipInfo(self, field, func) self._tooltipField = field self._tooltipFunc = func return self end function QueryScrollingTableColumnInfo.SetSortInfo(self, field) self._sortField = field return self end function QueryScrollingTableColumnInfo._GetSortField(self) return self._sortField end function QueryScrollingTableColumnInfo._HasText(self) return (self._textField or self._textFunc) and true or false end function QueryScrollingTableColumnInfo._HasTooltip(self) return (self._tooltipField or self._tooltipFunc) and true or false end function QueryScrollingTableColumnInfo._GetValueHelper(self, dataType, context, ...) local value = self._element._query:GetResultRowByUUID(context) local field, func = nil, nil if dataType == "text" then field = self._textField func = self._textFunc elseif dataType == "icon" then field = self._iconField func = self._iconFunc elseif dataType == "tooltip" then field = self._tooltipField func = self._tooltipFunc elseif dataType == "expanderState" then return self._expanderStateFunc(self._element, value) elseif dataType == "badgeState" then return self._badgeStateFunc(self._element, value) elseif dataType == "actionIcon" then local index, isMouseOver = ... return self._actionIconFunc(self._element, context, index, isMouseOver) else error("Unknown dataType: "..tostring(dataType)) end if field then value = value:GetField(field) end if func then value = func(value, ...) end return value end -- ============================================================================ -- QueryScrollingTableInfo Class -- ============================================================================ function QueryScrollingTableInfo._IsSortEnabled(self) for _, col in ipairs(self._cols) do if col:_GetSortField() then return true end end return false end function QueryScrollingTableInfo._GetSortFieldById(self, id) for _, col in ipairs(self._cols) do if col:_GetId() == id then return col:_GetSortField() end end error("Unknown id: "..tostring(id)) end function QueryScrollingTableInfo._GetIdBySortField(self, field) for _, col in ipairs(self._cols) do if col:_GetSortField() == field then return col:_GetId() end end error("Unknown field: "..tostring(field)) end