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.

380 lines
9.1 KiB

  1. -- 成员列表Layout
  2. local ClubPlayerMatchRank = class("ClubPlayerMatchRank" , cc.UIView);
  3. local ClubDefine = require("luaScript.Protocol.Club.ClubDefine")
  4. --一页30个
  5. local PAGE_COUNT = 20
  6. function ClubPlayerMatchRank:ctor(clubId)
  7. ClubPlayerMatchRank.super.ctor(self)
  8. self.clubId = clubId
  9. --单个茶馆数据
  10. self.clubInfo = app.club_php.clubList[clubId]
  11. --只用于是否播放标签页按钮音效
  12. self.touchIdx = 1;
  13. self.curPage = 1
  14. self.totolPage = 1
  15. self.tag = ClubDefine.PlayListType.MATCH_RANK
  16. --排序:
  17. self.sort = true;
  18. self:loadUI()
  19. end
  20. function ClubPlayerMatchRank:loadUI()
  21. local ui = loadUI("res/ui/ui_club/ui_club_player_match_rank.ui")
  22. self.ui = ui;
  23. self:addChild(ui);
  24. end
  25. function ClubPlayerMatchRank:onEnter()
  26. ClubPlayerMatchRank.super.onEnter(self)
  27. self:initButton()
  28. self.ui.Items.ScrollView_Member:hideAllBar()
  29. self:initBindEvent()
  30. local playerJson = {
  31. clubId = self.clubInfo.clubId,
  32. viewType = self.tag,
  33. status = self.tag,
  34. orderBy = "role",
  35. sort = "desc",
  36. }
  37. app.club_php:requestPlayerList(playerJson)
  38. end
  39. function ClubPlayerMatchRank:initButton()
  40. --关闭
  41. self.ui.Items.Button_close:registerClick(handler(self , self.onClose))
  42. --搜索
  43. self.ui.Items.Button_search:registerClick(handler(self , self.onSearchPlayer))
  44. --翻页
  45. self.ui.Items.Button_page_up:registerClick(handler(self , self.onClickUpPage))
  46. self.ui.Items.Button_page_next:registerClick(handler(self , self.onClickNextPage))
  47. --玩家红花数排序
  48. self.ui.Items.Button_status:registerClick(handler(self , self.onStatuSort))
  49. self.ui.Items.Layout_status:registerClick(handler(self , self.onStatuSort))
  50. self.ui.Items.Button_login:registerClick(handler(self , self.onloginTimeSort))
  51. self.ui.Items.Layout_login:registerClick(handler(self , self.onloginTimeSort))
  52. end
  53. --玩家状态排序
  54. function ClubPlayerMatchRank:onStatuSort()
  55. playBtnEffect()
  56. if self.sort then
  57. --升序
  58. self:sortRedNum("asc");
  59. self.sort = false;
  60. else
  61. --降序
  62. self:sortRedNum("desc");
  63. self.sort = true;
  64. end
  65. end
  66. function ClubPlayerMatchRank:sortRedNum(sortType)
  67. if self.clubInfo.players then
  68. local playerList = self.lastSortPlayer;
  69. if playerList then
  70. local lT = {};
  71. for k,v in pairs(playerList) do
  72. table.insert(lT,v)
  73. end
  74. if sortType == "asc" then
  75. --升序
  76. local function sortFunc(a,b)
  77. return a.changeRedFlower < b.changeRedFlower
  78. end
  79. table.sort(lT, sortFunc);
  80. elseif sortType == "desc" then
  81. --降序
  82. local function sortFunc(a,b)
  83. return a.changeRedFlower > b.changeRedFlower
  84. end
  85. table.sort(lT, sortFunc);
  86. end
  87. self:updatePlayerList(lT)
  88. end
  89. end
  90. end
  91. --玩家状态排序
  92. function ClubPlayerMatchRank:onloginTimeSort()
  93. playBtnEffect()
  94. if self.sort then
  95. --升序
  96. self:sortLoginTimeNum("asc");
  97. self.sort = false;
  98. else
  99. --降序
  100. self:sortLoginTimeNum("desc");
  101. self.sort = true;
  102. end
  103. end
  104. function ClubPlayerMatchRank:sortLoginTimeNum(sortType)
  105. if self.clubInfo.players then
  106. local playerList = self.lastSortPlayer;
  107. if playerList then
  108. local lT = {};
  109. for k,v in pairs(playerList) do
  110. table.insert(lT,v)
  111. end
  112. if sortType == "asc" then
  113. --升序
  114. local function sortFunc(a,b)
  115. return a.loginTime < b.loginTime
  116. end
  117. table.sort(lT, sortFunc);
  118. elseif sortType == "desc" then
  119. --降序
  120. local function sortFunc(a,b)
  121. return a.loginTime > b.loginTime
  122. end
  123. table.sort(lT, sortFunc);
  124. end
  125. self:updatePlayerList(lT)
  126. end
  127. end
  128. end
  129. function ClubPlayerMatchRank:initBindEvent()
  130. --绑定请求成员列表成功回调事件
  131. self:bindEvent(app.club_php , GAME_EVENT.CLUB_PLAYER_LIST , handler(self , self.onUpdatePlayerListEvent))
  132. --权限发生改变
  133. self:bindEvent(app.club_php , GAME_EVENT.CLUB_CHANGE_ROLE , handler(self , self.onChangeRole));
  134. --绑定比赛开关回调
  135. self:bindEvent(app.club_php , GAME_EVENT.CLUB_SET , handler(self , self.onSetSuccess));
  136. self:bindTextFildTouch()
  137. end
  138. -- 角色权限修改
  139. function ClubPlayerMatchRank:onChangeRole()
  140. self:removeFromParent()
  141. end
  142. -- 当比赛一关,其他和比赛有关的界面需要关闭
  143. function ClubPlayerMatchRank:onSetSuccess(data)
  144. if not data or not data.setType then
  145. return
  146. end
  147. if data.setType == GAME_CLUB_SET_STATE.Math_Switch then
  148. self:removeFromParent()
  149. end
  150. end
  151. function ClubPlayerMatchRank:onClose()
  152. playBtnCloseEffect()
  153. self:removeFromParent()
  154. end
  155. --下一页
  156. function ClubPlayerMatchRank:onClickNextPage()
  157. playBtnEffect()
  158. self.curPage = self.curPage + 1
  159. if self.curPage>self.totolPage then
  160. self.curPage = self.totolPage
  161. end
  162. self:updatePlayerList()
  163. end
  164. --上一页
  165. function ClubPlayerMatchRank:onClickUpPage()
  166. playBtnEffect()
  167. self.curPage = self.curPage - 1
  168. if self.curPage<1 then
  169. self.curPage = 1
  170. end
  171. self:updatePlayerList()
  172. end
  173. function ClubPlayerMatchRank:onUpdatePlayerListEvent(data)
  174. if not data or not data.type then
  175. return
  176. end
  177. local mType = data.type
  178. local numPlayerM = 0
  179. if mType == self.tag then
  180. local players = {}
  181. for k,v in pairs(self.clubInfo.players) do
  182. if v and v.role ~= ClubDefine.Job.Manager and v.role ~= ClubDefine.Job.Creator then
  183. table.insert(players,v)
  184. else
  185. numPlayerM = numPlayerM + 1
  186. end
  187. end
  188. --降序
  189. local function sortFunc(a,b)
  190. if self.sort then
  191. return a.changeRedFlower > b.changeRedFlower
  192. else
  193. return a.changeRedFlower < b.changeRedFlower
  194. end
  195. end
  196. table.sort(players,sortFunc)
  197. self:updatePlayerList(players)
  198. self.ui.Items.Text_total_num:setText(tostring(table.nums(players)))
  199. end
  200. end
  201. function ClubPlayerMatchRank:updatePlayerList(data)
  202. local mListView = self.ui.Items.ScrollView_Member
  203. local className = "luaScript.Views.Club.ClubPlayerMatchRankItem"
  204. mListView:getInnerContainer():setAutoSize(true)
  205. mListView:removeAllChildren()
  206. local players = {}
  207. if data then
  208. players = data
  209. --记录上一次排序后的players数组,点上一页下一页时用
  210. self.lastSortPlayer = players
  211. else
  212. if self.lastSortPlayer and #self.lastSortPlayer >0 then
  213. players = self.lastSortPlayer
  214. else
  215. for k,v in pairs(self.clubInfo.players) do
  216. if v and v.role ~= ClubDefine.Job.Manager and v.role ~= ClubDefine.Job.Creator then
  217. table.insert(players,v)
  218. end
  219. end
  220. end
  221. end
  222. self.totolPage = math.ceil(table.nums(players)/PAGE_COUNT)
  223. local startIndex = (self.curPage-1) * PAGE_COUNT + 1
  224. local endIndex = startIndex + PAGE_COUNT - 1
  225. logD("ClubPlayerMatchRank match88888当前页玩家数据:")
  226. for i=startIndex,endIndex do
  227. local v = players[i]
  228. if v then
  229. --只打印第一页数据吧
  230. if self.curPage == 1 then
  231. logD("ClubPlayerMatchRank match88888"..table.tostring(v))
  232. end
  233. item = import(className):new(v,self.clubInfo.clubId,i)
  234. mListView:addChild(item.ui)
  235. end
  236. end
  237. logD("ClubPlayerMatchRank match88888当前页玩家数据打印完毕!")
  238. mListView:jumpToTopOnSizeChanged()
  239. if self.totolPage == 0 then
  240. self.ui.Items.Text_Cur_page:setString(0)
  241. self.ui.Items.Text_Total_page:setString("/0")
  242. else
  243. self.ui.Items.Text_Cur_page:setString(self.curPage)
  244. self.ui.Items.Text_Total_page:setString("/"..self.totolPage)
  245. end
  246. end
  247. --搜索玩家
  248. function ClubPlayerMatchRank:onSearchPlayer()
  249. playBtnEffect()
  250. if not self.clubInfo then
  251. return
  252. end
  253. local searchCont = self.ui.Items.TextField_search:getText();
  254. if searchCont == "" then
  255. showTooltip("请输入玩家昵称或ID!");
  256. self:updatePlayerList()
  257. return;
  258. end
  259. local mListView = self.ui.Items.ScrollView_Member
  260. mListView:removeAllChildren();
  261. self.itemT = {};
  262. if self.lastSortPlayer then
  263. local playerList = self.lastSortPlayer
  264. if playerList then
  265. local searchNameT = {};
  266. local searchIdT = {};
  267. --操作者id
  268. local operatorUid = app.user.loginInfo.uid
  269. --操作者角色权限
  270. local role = self.clubInfo.role;
  271. --创建者id(即管理员id)
  272. local creatorUid = self.clubInfo.ownerId;
  273. local className = "luaScript.Views.Club.ClubPlayerMatchRankItem"
  274. --茶馆id
  275. local clubID = self.clubInfo.clubId;
  276. local index = 1
  277. for k,playerInfo in pairsByKeys(playerList) do
  278. local findNameEnd = string.find(playerInfo.name, searchCont);
  279. if findNameEnd then
  280. --昵称查找
  281. local playerItem = import(className):new(playerInfo,self.clubInfo.clubId,index)
  282. mListView:addChild(playerItem.ui);
  283. table.insert(self.itemT, playerItem);
  284. else
  285. --id查找
  286. local findIdEnd = string.find(playerInfo.uid, searchCont);
  287. if findIdEnd then
  288. local playerItem = import(className):new(playerInfo,self.clubInfo.clubId,index)
  289. mListView:addChild(playerItem.ui);
  290. table.insert(self.itemT, playerItem);
  291. end
  292. end
  293. index = index + 1
  294. end
  295. local child = mListView:getChildren();
  296. local childSize = table.nums(child);
  297. mListView:jumpToTopOnSizeChanged();
  298. end
  299. end
  300. end
  301. function ClubPlayerMatchRank:bindTextFildTouch()
  302. local nodeName = self.ui.Items.TextField_search;
  303. local function onTouchEnded(touch , event)
  304. local searchCont = nodeName:getText();
  305. if searchCont == "" then
  306. self:updatePlayerList()
  307. return;
  308. end
  309. self:onSearchPlayer()
  310. end
  311. nodeName:addEventListener(onTouchEnded)
  312. end
  313. return ClubPlayerMatchRank