-- 牌友圈排行界面 local TimeSettingPanel = import(".TimeSettingPanelTog") local GroupMngRankView = {} local M = GroupMngRankView function GroupMngRankView.new(gid) local self = M self.class = "GroupMngRankView" self.group_id = gid self:FillView() return self end function M:clearRankData() self.rank_data = {} self.lst_rank.numItems = 0 self.win_data = {} self.lst_winrank.numItems = 0 end -- 初始化数据 function M:initData() self.rank_data = {} self.round_data = {} self.win_data = {} self.lst_rank.numItems = 0 self.lst_round.numItems = 0 local page = self._view:GetController("page").selectedIndex if page == 0 then self:GetRankData(0) elseif page == 1 then self:GetRoundData() elseif page == 2 then self:GetWinRankData(0) end end -- 快速访问 function M:navigation() self._view:GetController("page").selectedIndex = 0 self:initData() end function M:FillView() self._view = UIPackage.CreateObjectFromURL("ui://NewGroup/View_GroupRank") local group = DataManager.groups:get(self.group_id) if group.lev ~= 3 then self._view:GetController("mng").selectedIndex = 1 end self.zongren = self._view:GetChild("zongren") self.rank_data = {} self.round_data = {} self.win_data = {} self._view:GetChild("btn_search").onClick:Set(function() self:clearRankData() self:GetRankData(#self.rank_data) end) self._view:GetChild("btn_search1").onClick:Set(function() self:clearRankData() self:GetWinRankData(#self.win_data) end) self.lst_rank = self._view:GetChild("lst_rank") self.lst_rank:SetVirtual() self.lst_rank.itemRenderer = function(index, obj) self:OnRenderRankItem(index, obj) end self.lst_rank.scrollPane.onPullUpRelease:Set(function() self:GetRankData(self.lst_rank.numItems) end) self.lst_round = self._view:GetChild("lst_round") self.lst_round:SetVirtual() self.lst_round.itemRenderer = function(index, obj) self:OnRenderRoundItem(index, obj) end self.lst_winrank = self._view:GetChild("lst_winrank") self.lst_winrank:SetVirtual() self.lst_winrank.itemRenderer = function(index, obj) self:OnRenderWinRankItem(index, obj) end self.lst_winrank.scrollPane.onPullUpRelease:Set(function() self:GetWinRankData(self.lst_winrank.numItems) end) local ctr_page = self._view:GetController("page") ctr_page.onChanged:Set(function() if ctr_page.selectedIndex == 0 then self.rank_data = {} self.lst_rank.numItems = 0 self:GetRankData(0) elseif ctr_page.selectedIndex == 1 then self:GetRoundData() else self.win_data = {} self.lst_winrank.numItems = 0 self:GetWinRankData(0) end end) local items = {} local values = {} table.insert(items, "全部游戏统计") table.insert(values, "0") local group = DataManager.groups:get(self.group_id) if #group.playList > 0 then for i = 1, #group.playList do local play = group.playList[i] table.insert(items, play.name) table.insert(values, tostring(play.id)) end end local cb_play = self._view:GetChild("cb_play") cb_play.items = items cb_play.values = values cb_play.selectedIndex = 0 self._view:GetChild("cb_play").onChanged:Set(function() self.rank_data = {} self.round_data = {} self.win_data = {} self.lst_rank.numItems = 0 self.lst_round.numItems = 0 self.lst_winrank.numItems = 0 if ctr_page.selectedIndex == 0 then self:GetRankData(0) elseif ctr_page.selectedIndex == 1 then self:GetRoundData() else self:GetWinRankData(0) end end) self.time_panel = TimeSettingPanel.new(self._view, self._view:GetChild("btn_date1"), self._view:GetChild("btn_date2"), -308, 0, function() self:clearRankData() self:GetRankData(#self.rank_data) end) self.time_panel1 = TimeSettingPanel.new(self._view, self._view:GetChild("btndate1"), self._view:GetChild("btndate2"), -308, 0, function() self:clearRankData() self:GetWinRankData(#self.win_data) end) end function M:GetRankData(index) ViewUtil.ShowModalWait() local begin_time, end_time = self.time_panel:GetDate() local pid = tonumber(self._view:GetChild("cb_play").value) local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_GetMemberRank(self.group_id, pid, index, 6, begin_time, end_time, nil, function(res) if self._is_destroy then return end ViewUtil.CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取排名信息失败") else local ranks = res.Data.ranks if #ranks == 0 then return end for i = 1, #ranks do self.rank_data[#self.rank_data + 1] = ranks[i] end self.lst_rank.numItems = #self.rank_data self.zongren.text = "总人数:" .. res.Data.allActiveNum end end) end function M:GetWinRankData(index) ViewUtil.ShowModalWait() local begin_time, end_time = self.time_panel1:GetDate() local pid = tonumber(self._view:GetChild("cb_play").value) local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_GetMemberRank(self.group_id, pid, index, 6, begin_time, end_time, 1, function(res) if self._is_destroy then return end ViewUtil.CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取总输赢排名信息失败") else local ranks = res.Data.ranks if #ranks == 0 then return end for i = 1, #ranks do self.win_data[#self.win_data + 1] = ranks[i] end -- table.sort(self.win_data,function (a,b) -- return a.win > b.win -- end) self.lst_winrank.numItems = #self.win_data self.zongren.text = "总人数:" .. res.Data.allActiveNum end end) end function M:OnRenderRankItem(index, obj) local tem = index + 1 local data = self.rank_data[tem] if tem < 4 then obj:GetController("order").selectedIndex = tem else obj:GetController("order").selectedIndex = 0 obj:GetChild("tex_order").text = tem end local group = DataManager.groups:get(self.group_id) local str_nick = ViewUtil.stringEllipsis(data.nick) if group.lev ~= 3 then obj:GetController("mng").selectedIndex = 1 str_nick = string.format("%s\r%s%s", str_nick, "id:", data.uid) end obj:GetChild("tex_name").text = str_nick obj:GetChild("tex_score").text = d2ad(data.score) obj:GetChild("tex_round").text = data.round end function M:OnRenderWinRankItem(index, obj) local tem = index + 1 local data = self.win_data[tem] if tem < 4 then obj:GetController("order").selectedIndex = tem else obj:GetController("order").selectedIndex = 0 obj:GetChild("tex_order").text = tem end local group = DataManager.groups:get(self.group_id) local str_nick = ViewUtil.stringEllipsis(data.nick) if group.lev ~= 3 then obj:GetController("mng").selectedIndex = 1 str_nick = string.format("%s\r%s%s", str_nick, "id:", data.uid) end obj:GetChild("tex_name").text = str_nick obj:GetChild("tex_score").text = d2ad(data.score) obj:GetChild("tex_round").text = data.round end function M:GetRoundData() ViewUtil.ShowModalWait() local pid = tonumber(self._view:GetChild("cb_play").value) local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_GetRoundStat(self.group_id, pid, function(res) if self._is_destroy then return end ViewUtil.CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取排名信息失败") else self.round_data = res.Data.rounds self.lst_round.numItems = #self.round_data end end) end function M:OnRenderRoundItem(index, obj) local tem = #self.round_data - index local data = self.round_data[tem] obj:GetChild("tex_time").text = os.date("%Y-%m-%d", data.time) obj:GetChild("tex_round").text = data.num end return M