09/12/16, 05:51 PM | #1 |
ZO_SortFilterList -- What am i doing wrong??? :(
I'm trying to make a scroll list with columns.
I started by downloading "ScrollListExample" addon, which didn't work. I fixed it by comparing it's code to MailR. Then it worked. Then I copied the code into my add-on and I'm getting this error: Here's my code: Code:
UI_OrdersList = ZO_SortFilterList:Subclass() UI_OrdersList.defaults = {} UI_OrdersList.SORT_KEYS = { ["name"] = {}, ["race"] = {tiebreaker="name"}, ["class"] = {tiebreaker="name"}, ["zone"] = {tiebreaker="name"} } function UI_OrdersList:New() local units = ZO_SortFilterList.New(self, HotepCGS_UI_main) units.masterList = {} ZO_ScrollList_AddDataType(units.list, 1, "HotepCGS_UI_main_OrdersList_Row", 30, function(control, data) self:SetupOrderRow(control, data) end) ZO_ScrollList_EnableHighlight(units.list, "ZO_ThinListHighlight") units.sortFunction = function(listEntry1, listEntry2) return ZO_TableOrderingFunction(listEntry1.data, listEntry2.data, units.currentSortKey, UI_OrdersList.SORT_KEYS, units.currentSortOrder) end units:RefreshData() return units end function UI_OrdersList:SetupOrderRow(rowControl, data) rowControl.data = data rowControl.name = GetControl(rowControl, "Name") rowControl.race = GetControl(rowControl, "Race") rowControl.class = GetControl(rowControl, "Class") rowControl.zone = GetControl(rowControl, "Zone") rowControl.name:SetText(data.name) rowControl.race:SetText(data.race) rowControl.class:SetText(data.class) rowControl.zone:SetText(data.zone) local DEFAULT_TEXT = ZO_ColorDef:New(0.4627, 0.737, 0.7647, 1) rowControl.name.normalColor = DEFAULT_TEXT rowControl.race.normalColor = DEFAULT_TEXT rowControl.class.normalColor = DEFAULT_TEXT rowControl.zone.normalColor = DEFAULT_TEXT ZO_SortFilterList.SetupRow(self, rowControl, data) end function UI_OrdersList:BuildMasterList() self.masterList = HotepCGS.GetOrdersList() end function UI_OrdersList:FilterScrollList() local scrollData = ZO_ScrollList_GetDataList(self.list) ZO_ClearNumericallyIndexedTable(scrollData) for i = 1, #self.masterList do local data = self.masterList[i] table.insert(scrollData, ZO_ScrollList_CreateDataEntry(1, data)) end end function UI_OrdersList:SortScrollList() local scrollData = ZO_ScrollList_GetDataList(self.list) table.sort(scrollData, self.sortFunction) end function UI_OrdersList:Refresh() self:RefreshData() end function HotepCGS.test3() SCENE_MANAGER:ToggleTopLevel(HotepCGS_UI_main) end function HotepCGS.MainMenuSwitch(orderstatus) local headings = { [ORDER_STATUS_WAITING] = "Viewing all Waiting orders", [ORDER_STATUS_CLAIMED] = "Viewing all Claimed orders", [ORDER_STATUS_DELIVERED] = "Viewing all Delivered orders", } HotepCGS_UI_main_OrdersHeading:SetText(headings[orderstatus]) HotepCGS.UI_OrdersList:Refresh() end function HotepCGS.GetOrdersList(orderstatus) local dataItems = {} for emoteIndex=1, GetNumEmotes() do local emoteSlashName, emoteCategory, emoteId = GetEmoteInfo(emoteIndex) -- Organize your data for each item inside of a table local data = { name = string.sub(emoteSlashName,2), race = tostring(emoteId), class = tostring(emoteCategory), zone = tostring(emoteIndex), } -- and use table.insert to put them into the dataItems table table.insert(dataItems, data) end return dataItems end function HotepCGS.OnOrderSelect(control, button, upInside) d(control.data) end function HotepCGS.InitOrdersList() SCENE_MANAGER:RegisterTopLevel(HotepCGS_UI_main, false) HotepCGS.UI_OrdersList = UI_OrdersList:New() HotepCGS.MainMenuSwitch(ORDER_STATUS_WAITING) end function HotepCGS:Initialize() EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_ACTIVATED, function() EVENT_MANAGER:UnregisterForEvent(self.name, EVENT_PLAYER_ACTIVATED) msgWithName("Loaded.") HotepCGS.InitOrdersList() end ) -- ... other stuff ... end function HotepCGS.OnAddOnLoaded(event, addonName) if (addonName == HotepCGS.name) then EVENT_MANAGER:UnregisterForEvent(HotepCGS.name, EVENT_ADD_ON_LOADED) math.randomseed(GetTimeStamp()) HotepCGS:Initialize() end end EVENT_MANAGER:RegisterForEvent(HotepCGS.name, EVENT_ADD_ON_LOADED, HotepCGS.OnAddOnLoaded) Code:
<GuiXml> <Controls> <TopLevelControl name="HotepCGS_UI_main" mouseEnabled="true" movable="true" clampedToScreen="true" hidden="true"> <Dimensions x="750" y="800" /> <Anchor point="CENTER" /> <Controls> <Backdrop name="$(parent)_BG" inherits="ZO_DefaultBackdrop" /> <Label name="$(parent)_WindowTitle" font="ZoFontWindowTitle" text="|c3366ffHotep|r |cff6633Crafting Guild Service|r"> <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" /> </Label> <Texture name="$(parent)_TopDivider" textureFile="/esoui/art/miscellaneous/horizontaldivider.dds" tier="HIGH"> <Dimensions x="800" y="4"/> <Anchor point="TOP" relativeTo="$(parent)" offsetY="38" /> </Texture> <Button name="$(parent)_Button_Close" inherits="ZO_ButtonBehaviorClickSound"> <Dimensions x="40" y="40" /> <Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="15" /> <Textures normal="EsoUI/Art/Buttons/closebutton_up.dds" pressed="EsoUI/Art/Buttons/closebutton_down.dds" mouseOver="EsoUI/Art/Buttons/closebutton_mouseover.dds" disabled="EsoUI/Art/Buttons/closebutton_disabled.dds"/> <OnClicked> HotepCGS.test3() </OnClicked> </Button> <Button name="$(parent)_Button_Waiting" inherits="ZO_DefaultButton" text="Waiting Orders"> <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="30" offsetY="46" /> <OnClicked> HotepCGS.MainMenuSwitch("waiting") </OnClicked> </Button> <Button name="$(parent)_Button_Claimed" inherits="ZO_DefaultButton" text="Claimed Orders"> <Anchor point="TOP" relativeTo="$(parent)" relativePoint="TOP" offsetX="0" offsetY="46" /> <OnClicked> HotepCGS.MainMenuSwitch("claimed") </OnClicked> </Button> <Button name="$(parent)_Button_Delivered" inherits="ZO_DefaultButton" text="Delivered Orders"> <Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="-30" offsetY="46" /> <OnClicked> HotepCGS.MainMenuSwitch("delivered") </OnClicked> </Button> <Label name="$(parent)_OrdersHeading" font="ZoFontHeader4" text=""> <Anchor point="TOP" relativeTo="$(parent)_Button_Claimed" relativePoint="BOTTOM" offsetY="6" /> <Dimensions x="700" /> </Label> <Control name="$(parent)_OrdersListHeaders"> <Anchor point="TOPLEFT" relativeTo="$(parent)_OrdersHeading" relativePoint="BOTTOMLEFT" offsetX="0" offsetY="16"/> <Dimensions y="32" /> <Controls> <Control name="$(parent)Name" inherits="ZO_SortHeader"> <OnInitialized> ZO_SortHeader_Initialize(self, "Name", "name", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold") </OnInitialized> <Anchor point="TOPLEFT" /> <Dimensions x="128" y="32" /> </Control> <Control name="$(parent)Race" inherits="ZO_SortHeader"> <OnInitialized> ZO_SortHeader_Initialize(self, "Race", "status", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold") </OnInitialized> <Anchor point="TOPLEFT" relativeTo="$(parent)Name" relativePoint="TOPRIGHT"/> <Dimensions x="128" y="32" /> </Control> <Control name="$(parent)Class" inherits="ZO_SortHeader"> <OnInitialized> ZO_SortHeader_Initialize(self, "Class", "rankName", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold") </OnInitialized> <Anchor point="TOPLEFT" relativeTo="$(parent)Race" relativePoint="TOPRIGHT" /> <Dimensions x="128" y="32" /> </Control> <Control name="$(parent)Zone" inherits="ZO_SortHeader"> <OnInitialized> ZO_SortHeader_Initialize(self, "Zone", "recipient", ZO_SORT_ORDER_UP, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold") </OnInitialized> <Anchor point="TOPLEFT" relativeTo="$(parent)Class" relativePoint="TOPRIGHT" /> <Dimensions x="128" y="32" /> </Control> </Controls> </Control> <Control name="$(parent)_OrdersList" inherits="ZO_ScrollList"> <Anchor point="TOPLEFT" relativeTo="$(parent)_OrdersListHeaders" relativePoint="BOTTOMLEFT" /> <Dimensions x="700" y="650" /> </Control> </Controls> </TopLevelControl> <Button name="HotepCGS_UI_main_OrdersList_Row" virtual="true"> <Dimensions y="30" /> <Anchor point="RIGHT" relativeTo="$(parent)" /> <OnMouseEnter> HotepCGS.UI_OrdersList:Row_OnMouseEnter(self) </OnMouseEnter> <OnMouseExit> HotepCGS.UI_OrdersList:Row_OnMouseExit(self) </OnMouseExit> <OnMouseUp> HotepCGS.OnOrderSelect(self, button, upInside) </OnMouseUp> <Controls> <Label name="$(parent)Name" font="ZoFontWinH4" wrapMode="ELLIPSIS"> <Anchor point="TOPLEFT" relativeTo="$(parent)" /> <Dimensions x="128" y="32" /> </Label> <Label name="$(parent)Race" font="ZoFontWinH4" wrapMode="ELLIPSIS"> <Anchor point="TOPLEFT" relativeTo="$(parent)Name" relativePoint="TOPRIGHT" /> <Dimensions x="128" y="32" /> </Label> <Label name="$(parent)Class" font="ZoFontWinH4" wrapMode="ELLIPSIS"> <Anchor point="TOPLEFT" relativeTo="$(parent)Race" relativePoint="TOPRIGHT" /> <Dimensions x="128" y="32" /> </Label> <Label name="$(parent)Zone" font="ZoFontWinH4" wrapMode="ELLIPSIS"> <Anchor point="TOPLEFT" relativeTo="$(parent)Class" relativePoint="TOPRIGHT" /> <Dimensions x="128" y="32" /> </Label> </Controls> </Button> </Controls> </GuiXml> Please Help. I've been pulling my hair out for a week. |
|
09/12/16, 06:10 PM | #2 |
Lua Code:
should be Lua Code:
no Lua Code:
drop Lua Code:
Lua Code:
Lua Code:
You have a nice easy example of all the stuff in Dyer addon. I also written long time ago a little tuto, bit hidden : http://www.esoui.com/forums/showpost...3&postcount=12 Consider the Lua highlight in forums too (last icon), it helps a lot, thank you |
|
09/12/16, 08:43 PM | #3 |
OK, Ayantir, I did everything you said:
Lua Code:
... And I got the same error message as in OP. Would anyone else care to try to help me? It's past my bedtime, but i will read your "little tuto" tomorrow. Last edited by tomtomhotep : 09/12/16 at 08:45 PM. Reason: hit submit too soon |
|
09/13/16, 03:55 PM | #4 |
Praise the Three, I got it!!
After many trials and tribulations, I finally got it working. Thanks to the 8 divines and the Three.
I read the little tuto you linked to me, and changed my Lua to match, but that was no help. I still got the error. I finally realized what was wrong, from comparing your XML and the XML from ScrollListExample to my XML. The ZO_ScrollList control **MUST** be named "$(parent)List", and the container for the list headers MUST be named "$(parent)Headers" I had tried to give them more descriptive names. THAT was the whole problem. But thank you for your time. |
|
ESOUI » Developer Discussions » Lua/XML Help » ZO_SortFilterList -- What am i doing wrong??? :( |
«
Previous Thread
|
Next Thread
»
|
Display Modes |
Linear Mode |
Switch to Hybrid Mode |
Switch to Threaded Mode |
|
|