changhong/lua_probject/base_project/Game/View/NewGroup/MngView/GroupMngRankView.lua

269 lines
8.4 KiB
Lua

-- 牌友圈排行界面
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