2025-05-24 14:29:14 +08:00
|
|
|
-- 牌友圈排行界面
|
2025-05-29 02:30:53 +08:00
|
|
|
local TimeSettingPanel = import(".TimeSettingPanelTog")
|
2025-05-24 14:29:14 +08:00
|
|
|
|
|
|
|
|
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()
|
2025-05-29 02:30:53 +08:00
|
|
|
self.rank_data = {}
|
|
|
|
|
self.round_data = {}
|
2025-05-24 14:29:14 +08:00
|
|
|
self.win_data = {}
|
2025-05-29 02:30:53 +08:00
|
|
|
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()
|
2025-05-24 14:29:14 +08:00
|
|
|
elseif page == 2 then
|
|
|
|
|
self:GetWinRankData(0)
|
2025-05-29 02:30:53 +08:00
|
|
|
end
|
2025-05-24 14:29:14 +08:00
|
|
|
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()
|
2025-05-29 02:30:53 +08:00
|
|
|
self:GetRankData(#self.rank_data)
|
2025-05-24 14:29:14 +08:00
|
|
|
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")
|
2025-05-29 02:30:53 +08:00
|
|
|
self.lst_rank:SetVirtual()
|
2025-05-24 14:29:14 +08:00
|
|
|
self.lst_rank.itemRenderer = function(index, obj)
|
2025-05-29 02:30:53 +08:00
|
|
|
self:OnRenderRankItem(index, obj)
|
|
|
|
|
end
|
2025-05-24 14:29:14 +08:00
|
|
|
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)
|
2025-05-29 02:30:53 +08:00
|
|
|
self:OnRenderRoundItem(index, obj)
|
2025-05-24 14:29:14 +08:00
|
|
|
end
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
|
2025-05-24 14:29:14 +08:00
|
|
|
self.lst_winrank = self._view:GetChild("lst_winrank")
|
2025-05-29 02:30:53 +08:00
|
|
|
self.lst_winrank:SetVirtual()
|
2025-05-24 14:29:14 +08:00
|
|
|
self.lst_winrank.itemRenderer = function(index, obj)
|
2025-05-29 02:30:53 +08:00
|
|
|
self:OnRenderWinRankItem(index, obj)
|
|
|
|
|
end
|
2025-05-24 14:29:14 +08:00
|
|
|
self.lst_winrank.scrollPane.onPullUpRelease:Set(function()
|
|
|
|
|
self:GetWinRankData(self.lst_winrank.numItems)
|
|
|
|
|
end)
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
local ctr_page = self._view:GetController("page")
|
|
|
|
|
ctr_page.onChanged:Set(function()
|
|
|
|
|
if ctr_page.selectedIndex == 0 then
|
2025-05-24 14:29:14 +08:00
|
|
|
self.rank_data = {}
|
|
|
|
|
self.lst_rank.numItems = 0
|
2025-05-29 02:30:53 +08:00
|
|
|
self:GetRankData(0)
|
2025-05-24 14:29:14 +08:00
|
|
|
elseif ctr_page.selectedIndex == 1 then
|
2025-05-29 02:30:53 +08:00
|
|
|
self:GetRoundData()
|
2025-05-24 14:29:14 +08:00
|
|
|
else
|
|
|
|
|
self.win_data = {}
|
|
|
|
|
self.lst_winrank.numItems = 0
|
2025-05-29 02:30:53 +08:00
|
|
|
self:GetWinRankData(0)
|
|
|
|
|
end
|
|
|
|
|
end)
|
2025-05-24 14:29:14 +08:00
|
|
|
|
|
|
|
|
local items = {}
|
|
|
|
|
local values = {}
|
|
|
|
|
table.insert(items, "全部游戏统计")
|
|
|
|
|
table.insert(values, "0")
|
|
|
|
|
local group = DataManager.groups:get(self.group_id)
|
|
|
|
|
if #group.playList > 0 then
|
2025-05-29 02:30:53 +08:00
|
|
|
for i = 1, #group.playList do
|
|
|
|
|
local play = group.playList[i]
|
|
|
|
|
table.insert(items, play.name)
|
|
|
|
|
table.insert(values, tostring(play.id))
|
|
|
|
|
end
|
|
|
|
|
end
|
2025-05-24 14:29:14 +08:00
|
|
|
local cb_play = self._view:GetChild("cb_play")
|
|
|
|
|
cb_play.items = items
|
|
|
|
|
cb_play.values = values
|
|
|
|
|
cb_play.selectedIndex = 0
|
2025-05-29 02:30:53 +08:00
|
|
|
|
2025-05-24 14:29:14 +08:00
|
|
|
self._view:GetChild("cb_play").onChanged:Set(function()
|
2025-05-29 02:30:53 +08:00
|
|
|
self.rank_data = {}
|
|
|
|
|
self.round_data = {}
|
2025-05-24 14:29:14 +08:00
|
|
|
self.win_data = {}
|
2025-05-29 02:30:53 +08:00
|
|
|
self.lst_rank.numItems = 0
|
|
|
|
|
self.lst_round.numItems = 0
|
2025-05-24 14:29:14 +08:00
|
|
|
self.lst_winrank.numItems = 0
|
2025-05-29 02:30:53 +08:00
|
|
|
if ctr_page.selectedIndex == 0 then
|
|
|
|
|
self:GetRankData(0)
|
2025-05-24 14:29:14 +08:00
|
|
|
elseif ctr_page.selectedIndex == 1 then
|
2025-05-29 02:30:53 +08:00
|
|
|
self:GetRoundData()
|
2025-05-24 14:29:14 +08:00
|
|
|
else
|
|
|
|
|
self:GetWinRankData(0)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
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)
|
2025-05-24 14:29:14 +08:00
|
|
|
end
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
function M:GetRankData(index)
|
|
|
|
|
ViewUtil.ShowModalWait()
|
|
|
|
|
local begin_time, end_time = self.time_panel:GetDate()
|
|
|
|
|
local pid = tonumber(self._view:GetChild("cb_play").value)
|
2025-05-24 14:29:14 +08:00
|
|
|
local fgCtr = ControllerManager.GetController(NewGroupController)
|
2025-05-29 02:30:53 +08:00
|
|
|
fgCtr:FG_GetMemberRank(self.group_id, pid, index, 6, begin_time, end_time, nil, function(res)
|
2025-05-24 14:29:14 +08:00
|
|
|
if self._is_destroy then
|
|
|
|
|
return
|
|
|
|
|
end
|
2025-05-29 02:30:53 +08:00
|
|
|
ViewUtil.CloseModalWait()
|
|
|
|
|
if res.ReturnCode ~= 0 then
|
2025-05-24 14:29:14 +08:00
|
|
|
ViewUtil.ErrorTip(res.ReturnCode, "获取排名信息失败")
|
|
|
|
|
else
|
2025-05-29 02:30:53 +08:00
|
|
|
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
|
2025-05-24 14:29:14 +08:00
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
function M:GetWinRankData(index)
|
|
|
|
|
ViewUtil.ShowModalWait()
|
|
|
|
|
local begin_time, end_time = self.time_panel1:GetDate()
|
|
|
|
|
local pid = tonumber(self._view:GetChild("cb_play").value)
|
2025-05-24 14:29:14 +08:00
|
|
|
local fgCtr = ControllerManager.GetController(NewGroupController)
|
2025-05-29 02:30:53 +08:00
|
|
|
fgCtr:FG_GetMemberRank(self.group_id, pid, index, 6, begin_time, end_time, 1, function(res)
|
2025-05-24 14:29:14 +08:00
|
|
|
if self._is_destroy then
|
|
|
|
|
return
|
|
|
|
|
end
|
2025-05-29 02:30:53 +08:00
|
|
|
ViewUtil.CloseModalWait()
|
|
|
|
|
if res.ReturnCode ~= 0 then
|
2025-05-24 14:29:14 +08:00
|
|
|
ViewUtil.ErrorTip(res.ReturnCode, "获取总输赢排名信息失败")
|
|
|
|
|
else
|
2025-05-29 02:30:53 +08:00
|
|
|
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
|
2025-05-24 14:29:14 +08:00
|
|
|
-- table.sort(self.win_data,function (a,b)
|
|
|
|
|
-- return a.win > b.win
|
|
|
|
|
-- end)
|
2025-05-29 02:30:53 +08:00
|
|
|
self.lst_winrank.numItems = #self.win_data
|
|
|
|
|
self.zongren.text = "总人数:" .. res.Data.allActiveNum
|
2025-05-24 14:29:14 +08:00
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function M:OnRenderRankItem(index, obj)
|
2025-05-29 02:30:53 +08:00
|
|
|
local tem = index + 1
|
|
|
|
|
local data = self.rank_data[tem]
|
|
|
|
|
if tem < 4 then
|
|
|
|
|
obj:GetController("order").selectedIndex = tem
|
|
|
|
|
else
|
2025-05-24 14:29:14 +08:00
|
|
|
obj:GetController("order").selectedIndex = 0
|
2025-05-29 02:30:53 +08:00
|
|
|
obj:GetChild("tex_order").text = tem
|
|
|
|
|
end
|
2025-05-24 14:29:14 +08:00
|
|
|
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)
|
2025-05-29 02:30:53 +08:00
|
|
|
local tem = index + 1
|
|
|
|
|
local data = self.win_data[tem]
|
|
|
|
|
if tem < 4 then
|
|
|
|
|
obj:GetController("order").selectedIndex = tem
|
|
|
|
|
else
|
2025-05-24 14:29:14 +08:00
|
|
|
obj:GetController("order").selectedIndex = 0
|
2025-05-29 02:30:53 +08:00
|
|
|
obj:GetChild("tex_order").text = tem
|
|
|
|
|
end
|
2025-05-24 14:29:14 +08:00
|
|
|
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
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
function M:GetRoundData()
|
|
|
|
|
ViewUtil.ShowModalWait()
|
|
|
|
|
local pid = tonumber(self._view:GetChild("cb_play").value)
|
2025-05-24 14:29:14 +08:00
|
|
|
local fgCtr = ControllerManager.GetController(NewGroupController)
|
|
|
|
|
fgCtr:FG_GetRoundStat(self.group_id, pid, function(res)
|
|
|
|
|
if self._is_destroy then
|
|
|
|
|
return
|
|
|
|
|
end
|
2025-05-29 02:30:53 +08:00
|
|
|
ViewUtil.CloseModalWait()
|
|
|
|
|
if res.ReturnCode ~= 0 then
|
2025-05-24 14:29:14 +08:00
|
|
|
ViewUtil.ErrorTip(res.ReturnCode, "获取排名信息失败")
|
|
|
|
|
else
|
2025-05-29 02:30:53 +08:00
|
|
|
self.round_data = res.Data.rounds
|
|
|
|
|
self.lst_round.numItems = #self.round_data
|
2025-05-24 14:29:14 +08:00
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function M:OnRenderRoundItem(index, obj)
|
2025-05-29 02:30:53 +08:00
|
|
|
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
|
2025-05-24 14:29:14 +08:00
|
|
|
end
|
|
|
|
|
|
2025-05-29 02:30:53 +08:00
|
|
|
return M
|